ITPub博客

首页 > 数据库 > MySQL > mysqldump备份时加single-transaction会不会加锁

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

原创 MySQL 作者:psufnxk2000 时间:2016-07-13 22:20:40 0 删除 编辑
mysqldump --all-databases --master-data=2 --single-transaction --quick -R --events -uroot > /tmp/full.sql

通过根踪可以看到:
8 Connect root@localhost on
8 Query /*!40100 SET @@SQL_MODE='' */
8 Query /*!40103 SET TIME_ZONE='+00:00' */
8 Query FLUSH /*!40101 LOCAL */ TABLES
8 Query FLUSH TABLES WITH READ LOCK
8 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
8 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
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 /*!40100 WITH CONSISTENT SNAPSHOT */的方式来实现的。
  里面同时有很多savepoint,
2 不加single-trsnsaction是通过在整个过程中锁表实现数据一致性的。


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





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



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25099483/viewspace-2121984/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-31

  • 博文量
    215
  • 访问量
    618319