START TRANSACTION语句使用WITH CONSISTENT SNAPSHOT子句时,会为事务启动一致性读(该子句仅适用于InnoDB)。其行为与执行START TRANSACTION语句之后+一个SELECT语句效果相同(会获取一个事务号,在read view中占个坑,但是不会请求任何锁)。WITH CONSISTENT SNAPSHOT子句不会自动修改当前的事务隔离级别,由于WITH CONSISTENT SNAPSHOT子句要求必须RR隔离级别下才会自动启用,因此只有当前隔离级别为RR时才会启用一致性快照,非RR隔离级别下,会忽略WITH CONSISTENT SNAPSHOT子句。从MySQL 5.7.2起,当WITH CONSISTENT SNAPSHOT子句被忽略时,会产生一个警告(类似上一篇mysqldump与innobackupex备份过程你知多少(一)提到的警告信息)。
为了使得更清晰地了解mysqldump在备份过程中使用WITH CONSISTENT SNAPSHOT子句的作用,下面咱们来演示一下带与不带WITH CONSISTENT SNAPSHOT子句会发生什么?
从上面的表格对比结果中可以看到:
1.2.4. 使用savepoint来设置回滚点的作用
大家都知道,设置SAVEPOINT是为了回滚在设置这个点时候发生变更的数据,但是mysqldump备份只是使用select语句做查询,为什么要使用savepoint呢?需要回滚什么呢?请看下文分析:
为了更清晰地了解mysqldump在备份过程中使用SAVEPOINT sp + ROLLBACK TO SAVEPOINT sp语句的作用,下面使用两个会话演示一下使用与不使用保存点会发生什么?
从上面的对比结果中可以得知:
下一篇"mysqldump与innobackupex备份过程你知多少(三)"我们将接着介绍"关于mysqldump的那些坑”,精彩内容不容错过,敬请期待!!