17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication 基于语句和行的复制的优势和劣势
17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication 基于语句和行的复制的优势和劣势
每个binary logging格式有优势和劣势,对于很多用户, mixed replication 格式提供了最好的数据完整性和性能的组合。
如果,然而, 你需要利用特定功能基于语句的或者基于行格式的 当执行某个人物,
你可以使用这个章节的信息,提供了他们的优势和劣势的一个总结,
Advantages of statement-based replication
Disadvantages of statement-based replication
Advantages of row-based replication
Disadvantages of row-based replication
基于语句复制的优点:
1.成熟的技术
2.更少的数据写入到Log files.当更新或者删除 影响很多行,这个导致更少的存储空间需要对于日志文件。
这也意者着从备份恢复可以迅速的完成
3.日志文件包含所有改变的语句,可以用于审计数据库
statement-based replication 的缺点
1. 语句是不安全的对于SBR,并不是所有修改语句(比如INSERT DELETE, UPDATE, and REPLACE statements)
可以被复制使用基于语句复制。
任何不确定行为是很难被复制使用基于语句的,比如DML包含如下:
一个语句取决于一个UDF 或者存储过程 是不确定的,
因为这样的UDF或者存储程序或者依赖的因素返回的值不同于参数提供的值。
行格式复制,然而, 简单的复制UDF或者存储过程返回的值
DELEET 和UPDATE 语句使用一个LIMIT 子句没有一个ORDER BY 是不确定的
语句使用下面的函数不能被正确的复制使用基于语句选项:
LOAD_FILE()
UUID(), UUID_SHORT()
USER()
FOUND_ROWS()
SYSDATE() (unless both the master and the slave are started with the --sysdate-is-now option)
GET_LOCK()
IS_FREE_LOCK()
IS_USED_LOCK()
MASTER_POS_WAIT()
RAND()
RELEASE_LOCK()
SLEEP()
VERSION()
1. INSERT ... SELECT 需要大量的row-level locks 相比基于行的复制
2.UPDATE语句 需要一个表扫描(没有index是被使用在WHERE子句)必须锁住大量的行,相比基于行复制
3.对于InnoDB:一个INSERT 语句使用 AUTO_INCREMENT 堵塞其他不冲突的INSERT 语句
4.对于复杂语句,语句必须被评估和被执行在slave上在记录被更新或者插入前。
1.在基于行的复制, slave只需要修改影响的行,不是执行整个语句
2.如果这里有个错误在slave上评估的时候,特别是当执行复杂的语句,基于语句的复制可能缓慢的增加错误的幅度根据影响的行
3.存储过程执行相同的NOW()值作为调用语句,然而, 这是不正确的过程
Advantages of row-based replication 基于记录的复制的优点
所有的改变可以被复制,这是最安全的复制形式
注意:
语句 更新信息在mysql 数据库 比如GRANT, REVOKE和触发器操作,存储函数(包含存储过程)
和事务 都被复制到slaves 使用基于语句的复制
对于语句比如CREATE TABLE ... SELECT ,一个CREATE 语句是生成一个表定义和复制使用基于语句复制,
记录插入时复制使用基于记录的格式。
这个技术是和很多书其他数据库管理系统相似
很少的row locks 是需要的在master上, 从而实现高并发,对于以下类型的语句:
INSERT ... SELECT
INSERT statements with AUTO_INCREMENT
UPDATE or DELETE statements with WHERE clauses that do not use keys or do not change most of the examined rows.
基于行的复制缺点:
RBR 可以产生更多以的数据 必须被记录,复制一个DML 语句(比如一个UPDATE或者DELETE 语句).
基于语句的复制只写语句到Binary log.
与之相反, row-based replication 写每个changed 记录到每个binary log.
如果语句改变很多记录,基于行复制可能写很多的数据到binary log.
这是真的即使语句被回滚。
这也意味着从备份恢复需要更久的时间。此外, binary log 是锁住很多时间来写数据,
这个可能会导致并发问题。使用 binlog_row_image=minimal
mysql> show variables like '%binlog_row_image%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| binlog_row_image | FULL |
+------------------+-------+
1 row in set (0.00 sec)
2. 确定UDFs产生大量的BLOB 值 花费很长时间来复制基于行的格式相比基于语句的。
这是以为BLOB 列值是记录的,相比语句产生的数据
3.对于表使用MyISAM 存储引擎,一个很强的lock 是需要的在slave上对于INSERT 语句当应用他们作为
基于行的events 到binary log 相比应用它们作为语句。
17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication 基于语句和行的复制的优势和劣势的更多相关文章
- 17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication 基于语句和基于行复制的优点和缺点: ...
- 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:
17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置: 你需要master ...
- 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标:
17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标: 你需要master ...
- Vue 单页面应用 SEO SPA single page application advantages and disadvantages
处理 Vue 单页面应用 SEO 的另一种思路 - muwoo - 博客园 https://www.cnblogs.com/tiedaweishao/p/7493971.html SPA网站SEO完美 ...
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
使用Http的Post方式与网络交互通信.Post方式需要向网络传输一部分数据,同时具有输入流和输出流. 详见:Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例 ...
- 17.1.2 Replication Formats
17.1.2 Replication Formats 复制格式 17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Bas ...
- 17.1.2?Replication Formats 复制格式:
17.1.2?Replication Formats 复制格式: 17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Ba ...
- mha安装使用手册
mha安装使用手册 注:目前mha最新的版本代码已经不放到google code网站了,而是放在github上,最新的版本为0.57,github链接如下: mha manager:https://g ...
- 涂抹mysql笔记-mysql复制特性
<>mysql复制特性:既可以实现整个服务(all databases)级别的复制,也可以只复制某个数据库或某个数据库中的某个指定的表对象.即可以实现A复制到B(主从单向复制),B再复制到 ...
随机推荐
- ASP.NET MVC(一) 什么是Razor
Razor 是一种向网页添加基于服务器的代码的标记语法 Razor 不是编程与语言.它是服务端标记语言. 当网页被写入浏览器时,基于服务器的代码能够创建动态内容.在网页加载时,服务器在向浏览器返回页面 ...
- ZeroMemory
ZeroMemory: 用0填充一个内存块 void ZeroMemory( [in] PVOID Destination, //内存块开始地址 [in] SIZE_T Length //填充块大小 ...
- C++学习笔记3—对话框
1.模态对话框 CTipDlg tipDlg; INT_PTR nResponse = tipDlg.DoModal(); if(nResponse == IDCANCEL) { return; } ...
- 02_Jquery_02_元素选择器
[简述] 元素选择器就是通过元素名来查询元素 $("elementName")这里就可以通过元素名来获取jquery元素了. 但与id选择器不同的是,名称相同的元素有很多,所以获取 ...
- 设计模式之 Factory Method 工厂方法
看到的比较有意思的一篇描述工厂方法的文章. http://www.codeproject.com/Articles/492900/From-No-Factory-to-Factory-Method 总 ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- AJAX 一些常用方法
abort() 停止当前请求getAllResponseHeaders() 返回包含HTTP请求的所有响应头信息,其中响应头包括Content-Length,Date,URI等内容.getRespon ...
- ceph入门学习链接
https://tobegit3hub1.gitbooks.io/ceph_from_scratch/content/introduction/component.html
- 关于学习HTML5中自己犯的错误
7.1写错了 siblings()这个函数写成了sibling,在jQuery中并没有这个函数的定义 在查找错误的过程中,自己也发现了一个学习jQuery的网站http://www.365mini.c ...
- PhoneGap与WAP站静态化
最近在参与的WAP站项目,决定将所有页面都静态化处理,登录验证.价格数据等都通ajax动态的方式实现.开始这么规划的目前是为了页面提高网站加载速度及SEO,最近看到了一篇报道phonegap buil ...