mysql笔记——事务

来源:互联网 发布:百度贴吧数据统计 编辑:程序博客网 时间:2024/05/18 12:30

事务日志

写日志为什么比直接写磁盘要快?

使用事务日志,存储引擎在修改表的数据时,只需要修改其内存拷贝,再把该修改行为记录到硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用的是追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不是随机I/O,所以快很多。事务日志持久以后,内存中被修改的数据在后台可以慢慢地刷回到磁盘。此方式称之为,预写式日志,修改数据需要写两次磁盘

如果数据的修改已经纪录到事务日志中,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时,能够自动恢复这部分修改的数据

隐式锁定和显示锁定

InnoDB采用的是两阶段锁定协议(two-phase locking protocol)。

隐式锁定:InnoDB会根据隔离级别在需要的时候自动加锁,并在执行COMMIT或ROLLBACK时释放。
显式锁定:InnoDB也支持通过特定的语句进行显式锁定,这些语句不属于SQL规范。

SELECT ... LOCK IN SHARE MODE;SELECT ... FOR UPDATE;
原创粉丝点击