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 格式有优势和缺点,对于很多用户,
- 混合的复制格式 应该提供最好的数据完整性和性能的最佳组合。
- 如果,但是, 你需要利用基于语句的功能或者基于行的功能 当执行某些任务,
- 你可以使用信息在这个章节, 它提供了一个相对的优点和缺点,以确定哪一个适合你
- 基于语句的复制的优点:
- 1. 提供的技术 在MySQL 3.23z种已经出现
- 2.较少的数据被写入到log files,当更新或者删除影响很多行的时候,这个结果是更少的存储空间需要用于log files.
- 这也意味着做备份和恢复备份可以更快的完成
- Log files 包含所有的语句,做出的任何改变,因此可以用于审计数据库
- Disadvantages of statement-based replication 基于语句的复制的缺点:
- 语句对于SBR是不安全的, 不是所有的语句修改数据(比如 INSERT DELETE, UPDATE, and REPLACE statements) 可以被复制
- 使用基于语句的复制。 任何非确定的行为是很难复制当使用基于语句的复制。
- 比如这样的DML 语句如下:
- 一个语句依赖 一个UDF或者存储过程是不确定的,因为 这样一个UDF返回的值 或者存储过程或者取决于因数意外的其他因数
- (基于行的复制,然而, 简单的复制UDF返回的值或者存储过程, 因此它影响表的记录和数据是master和slave相同的
- DELETE 和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()
- 然而, 所有其他的函数是可以正确复制的 使用基于语句的复制,包含NOW() 等等
- 语句不能被正确复制使用基于语句的复制是被记录一个警告如下:
- [Warning] Statement is not safe to log in statement format.
- 一个类似的警告,也会向客户端发出,客户端可以通过使用SHOW WARINGS
- 1.INSERT ... SELECT 需要大量的row-level locks 相比基于行的复制
- 2.UPDATE 语句 需要一个表扫描(因为没有索引是用于WHERE 子句)必须锁住大量的行 相比基于行的复制
- 3.对于 InnoDB: 一个INSERT 语句使用 AUTO_INCREMENT 锁住其他不冲突的插入语句
- 4.对于复杂的语句,语句 必须评估和执行在slave上 在记录被更新或者插入。
- 在基于行的复制, slave 只修改影响的行,不会执行整个语句
- 5. 如果有一个错误在出现在slave上评估的时候,特别是当执行复杂的语句,
- 基于语句复制可能会缓慢增加错误的范围 更具受影响的行。
- 存储函数执行相同的NOW() 值当调用语句,然而,这不是正确的存储过程。
- Advantages of row-based replication 基于行的复制:
- 所有的变化都可以被复制,这是最安全的复制形势。
- 注意:
- 语句在mysql 数据库中的更新,比如GRANT,REVOKE 和操作触发器,存储过程,
- 和视图 是都会复制到slave 使用基于语句的复制。
- 对于语句比如 CREATE TABLE ... SELECT, 一个CREATE 语句是生成从表定义和复制使用基于语句的格式,
- 当记录插入是被复制使用基于行的
- 这个技术是和很多其他的数据管理系统类似,对其他系统转移到MySQL
- 更少的锁是被需要在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.
- UPDATE or DELETE statements 在WHERE 子句不使用keys或者不改变检验的行
- 需要更少的锁 在Slave上对于 INSERT, UPDATE, or DELETE statement.
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 基于语句和行的复制的优势和劣势 每 ...
- Vue 单页面应用 SEO SPA single page application advantages and disadvantages
处理 Vue 单页面应用 SEO 的另一种思路 - muwoo - 博客园 https://www.cnblogs.com/tiedaweishao/p/7493971.html SPA网站SEO完美 ...
- 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 Reference Manual]17 Group Replication
17 Group Replication 17 Group Replication 17.1 Group Replication后台 17.1.1 Replication技术 17.1.1.1 主从复 ...
- sentence patterns
第四部分 推理题 1.世界上每个角落的每个人都有立场,都有背景,都有推理性,能推理出一个人语言的真意,才成就了真正的推理能力: 2.换言之,如果你能通过一个人的说话推理出其身份职业,你的推理能 ...
- Searching External Data in SharePoint 2010 Using Business Connectivity Services
from:http://blogs.msdn.com/b/ericwhite/archive/2010/04/28/searching-external-data-in-sharepoint-2010 ...
- Data manipulation primitives in R and Python
Data manipulation primitives in R and Python Both R and Python are incredibly good tools to manipula ...
随机推荐
- Java随机输出验证码包含数字、字母、汉字
//随机验证码,有数字.字符 //生成随机数,然后再截取,还要限定随机数的范围 String zimu = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn ...
- mysql 存储过程 游标的使用 与定义
1.游标的作用及属性 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作:游标有下面这些属性: a.游标是只读的,也就是不能更新它: b.游标是不能滚动的,也就是只能在一个方向上进 ...
- javascript函数apply和call
apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数obj:这个对象将代替Function类里this对象args:这 ...
- ThinkPHP第二十四天(JQuery常用方法、TP自动验证)
---恢复内容开始--- 1.JQuery常用方法 A:JS中可以用json格式数据当做数组使用,如var validate={username:false,pwd:false,pwded:false ...
- java 键盘输入多种方法 .(转载)
一.java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner. 实例程序: 1.利用 Scanner 实现从键盘读入int ...
- html 实现网址链接
<a href="http://acm.nyist.net/JudgeOnline/problemset.php">南工oj</a> HTML学习 < ...
- jquery.validate 一些技巧
1.Validator.element() Validates a single element, returns true if it is valid, false otherwise. http ...
- windows7下,protel 99se元件库加载问题的解决方案
方法一:到C盘(系统盘),系统文件夹(c:\windows)下的ADVPCB99SE和ADVSch99SE文件先配置原理图,用本文打开ADVPCB99SE文件,在[Change Library Fil ...
- css table 布局
使用CSS表格 CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列布局时所遇到的问题.例如,“display:table;”的CSS声明能够让一个HTML元素和它的子节点像table元素一 ...
- css包含块containing block
<css权威指南>P167: The Containing Block Every element is laid out with respect to its containing b ...