事务日志顺序写,数据刷盘为随机写,事务日志先刷盘--预写式日志(write-Ahead logging)
支持事务存储引擎--innodb、ndb cluster
第三方支持事务存储引擎--XtraDB、PBXT
mysql中的事务
默认采用自动提交模式,在这种模式下,所有查询都在一个事务内,直到显示执行commit或者rollback,同时又开始了另一个新事务
有些命令执行也会强制提交当前活动事务,比如:DDl中会导致大量数据改变的操作,比如alter table,另外lock table也会达到同样的效果
命令修改隔离级别(会话级、全局级)
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
参数文件设置库级隔离级别
在事务中混合使用存储引擎
mysql服务层不管理事务,事务由下层的引擎实现,所以同一事务使用不同引擎的表是不可靠的。
混合存储引擎的事务中正常的提交没什么问题,但是非事务性的表没法回滚--当存在这种操作时会有警告。
隐式和显示锁定
在事务执行过程中,随时都可以执行锁定,锁只有在事务结束的时候统一释放,innodb会根据隔离级别在需要的时候自动加锁。
显示加锁
存储引擎层实现
select ...lock in share mode;
select ...for update;
服务器层实现--尽量不要用,会影响性能,甚至会产生无法预料的结果
lock table;
unlock table;
阅读(961) | 评论(0) | 转发(0) |