MySQL学习笔记(三)——MVCC 发表于 2022-04-21 MVCC只在提交读和可重复读两个隔离级别中使用。 版本链对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL唯一键时都不会包含row_id列) trx_id:每次对某条聚簇索引记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。roll_pointer:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。 阅读全文 »
MySQL学习笔记(一)——事务和锁 发表于 2021-02-23 更新于 2022-04-16 分类于 数据库 前言:在广义的计算机世界中,锁和版本控制是并发环境下的保证高效和运行正确的主要手段。面对多线程争抢临界资源的情况,必须采取措施进行干预,否则会出现数据不一致。通常使用锁和版本控制在高性能和数据一致性之间找到一个平衡。 总体的提高并发的思路如下: 普通锁 本质是串行执行 读写锁 读写分离,实现读读并发。 版本控制 实现读写并发。 阅读全文 »