加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

mysqldump备份时加single-transaction会不会加锁

(2016-07-13 22:17:02)
标签:

mysqldump

single-transaction



mysqldump --all-databases --master-data=2 --single-transaction --quick -R --events -uroot > /tmp/full.sql

通过根踪可以看到:
8 Connect root@localhost on
8 Query
8 Query
8 Query FLUSH TABLES
8 Query FLUSH TABLES WITH READ LOCK
8 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
8 Query START TRANSACTION
8 Query SHOW VARIABLES LIKE 'gtid\_mode'
8 Query SHOW MASTER STATUS
8 Query UNLOCK TABLES

从红色部分可以看出,还是会加锁的,在这个过程中,别的session同样不能进行dml, 只是加锁的时间很短。


使用single-transaction时要求:
1 只对支持事务的存储引擎有效果
2 不能执行ddl操作,因为 ddl操作会改变字典表,而字典表多数是myisam的
3 事务隔离级别为 RR

mysqldump备份时,加和不加single-transaction的区别:
通过打开general_log可以看到过程:
1 加single-transaction时,是通过START TRANSACTION 的方式来实现的。
  里面同时有很多savepoint,
2 不加single-trsnsaction是通过在整个过程中锁表实现数据一致性的。


 
左图为加single-transaction,右图未加:

http://s9/mw690/001t50WTzy73e9MrUAob8&690




转载请注明源出处
QQ 273002188 欢迎一起学习
QQ 群 236941212
oracle,mysql,PG 相互交流





0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有