扫码阅读
手机扫码阅读

MVCC 水略深,但是弄懂了真的好爽!

14 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:MVCC 水略深,但是弄懂了真的好爽!
文章来源:
江南一点雨
扫码关注公众号

摘要

本文详细讨论了MySQL的MVCC(多版本并发控制)机制,包括事务隔离级别、快照读与当前读、undo log、行格式以及MVCC在不同隔离级别下的工作原理。

1. 隔离级别

MySQL支持四种事务隔离级别:序列化(SERIALIZABLE)、可重复读(REPEATABLE READ)、提交读(READ COMMITTED)、未提交读(READ UNCOMMITTED)。隔离级别越高,事务之间的隔离程度越严格,但可能影响性能。默认隔离级别是REPEATABLE READ。

2. 快照读与当前读

快照读返回事务开始时的数据状态,而当前读返回最新的数据状态。REPEATABLE READ下的快照读不会看到其他事务的修改,而当前读可以。

3. undo log

undo log记录数据的旧版本,用于事务回滚。

4. 行格式

行格式决定了数据如何存储,每行数据包括3个隐藏列:DB_ROW_ID(行ID),DB_TRX_ID(事务ID)和DB_ROLL_PTR(回滚指针)。

5. MVCC

MVCC是一种通过保存数据行的历史版本来支持高并发的技术。在REPEATABLE READ隔离级别下,事务在开始时创建一致性视图,而READ COMMITTED每个语句执行前都会创建新视图。MVCC使读写操作可并发执行。

6. 小结

MVCC使得在REPEATABLE READ和READ COMMITTED隔离级别下,读写操作并发执行,提高了性能。READ UNCOMMITTED总是读取最新数据,而SERIALIZABLE对所有读取行加锁。

想要了解更多内容?

查看原文:MVCC 水略深,但是弄懂了真的好爽!
文章来源:
江南一点雨
扫码关注公众号