- 多版本事务控制
undo日志,readview机制。
Screen Shot 2022-05-25 at 11.18.27 AM.png
trx_id,id,name 组成readview视图。
Screen Shot 2022-05-25 at 11.23.06 AM.png
MVCC和BufferPool
Screen Shot 2022-05-25 at 11.29.23 AM.png
- 数据库的crud都是直接操作buffer pool的,buffer pool设置成机器内存的60%左右,可以适当调大.
- 修改的数据通过IO线程随机写入到磁盘中,刷页(page),写入到磁盘中,称之为刷脏.
-
Screen Shot 2022-05-25 at 11.38.51 AM.png
总结
MVCC机制是通过read-view机制与undo版本链对比,使得不同的事务会根据数据版本链对比规则读取同一条数据在版本链上的不同版本数据.
- 为什么不直接在磁盘上操作sql呢?
因为性能差,通过写入到BufferPool内存,然后顺序写日志文件。
结论: 这样的配置可以在较高配置机器上可以抗下几千的读写请求.
Screen Shot 2022-05-25 at 11.46.07 AM.png
- 事务begin之后,
trx 1: 读的都是当时的commitId,的最新版本视图,之后再次读取也是他的事务readview视图。
trx 2: 读的是commit之后的视图.












网友评论