首页 > 试题广场 >

请你说说 InnoDB 的 MVCC

是一种用于解决读写冲突的的无锁并发控制机制,能够提高数据库的并发性能,更好的解决读写冲突,即使有读写冲突,也能够做到不加锁、不阻塞的并发读写,同时还能解决脏读、幻读、不可重复读的问题。
发表于 2022-08-03 16:44:19 回复(0)
为了解决读写冲突无锁的并发控制机制,一个数据维护多个版本,能解决脏读,幻读,不可重复读的问题
发表于 2023-03-21 22:16:03 回复(0)
快照包含了当前哪些事务id是活跃的,之后读取时不能读这部分
发表于 2022-05-21 08:21:32 回复(0)
1. MVCC:多版本并发控制机制。 2. 解决的问题是:在不加锁的情况下,解决读写冲突问题,解决了脏读、幻读、不可重复读问题。 3.技术依赖: =》隐藏列:每行数据都有隐藏列,包括:事务ID、undo log指针 =》undo log链表:每一个undo log代表这行数据的一个版本。 =》readView:内存快照,当所有的事务都提交的时候,数据库会创建一个新的快照(版本),然后,接下来所有新开始的事务都会读取到这个快照。注意,这里不会出现脏读,因为快照形成的那一刻,是所有的事务都提交的。接下来,是新事务的开始状态。
发表于 2023-11-08 21:53:47 回复(0)
多版本并发控制,一种用于解决无锁情况下的并发控制机制,可以解决脏读、幻读和不可重复读。
发表于 2023-09-23 09:50:03 回复(0)
MVCC全称是Multi-Version Concurrency Control ,即多版本并发控制。目的在于维持数据库的多个版本,使得读写没有冲突,提高数据库的并发能力和效率。可以做到无锁操作,并发非阻塞读写。同时还能解决脏读、不可重复读、幻读的问题。 但不能解决更新丢失问题 实现原理主要是依赖记录中的 3个隐式字段、undo日志 、Read View 1. 隐藏列:InnoDB中每行数据都有隐藏列,隐藏列中包含了最后一次修改该记录的事务ID、指向undo log的指针、隐藏主键(没有指定主键的时候才有) 2. 基于undo log的版本链:每行数据的隐藏列中包含了指向undo log的指针,而每条undo log也会指向更早版本的undo log,从而形成一条版本链。 3. ReadView:读取的是记录数据的可见版本,有可能是历史数据
发表于 2022-10-29 21:35:05 回复(0)
MVCC多版本并发控制,解决数据库读写冲突,读写
发表于 2022-09-27 20:16:53 回复(0)