MST

星途 面试题库

面试题:MySQL中B+树索引在事务并发处理时可能会遇到哪些常见问题?

在MySQL的事务处理场景下,当多个事务并发访问使用B+树索引的表数据时,可能会出现哪些常见的问题?请简要阐述这些问题产生的原因。
19.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. 脏读
    • 问题阐述:一个事务读取到另一个未提交事务修改的数据。
    • 产生原因:在并发环境下,当一个事务对数据进行修改但未提交时,另一个事务就可以读取到这些未提交的数据。例如事务A修改了某条记录但未提交,事务B此时读取该记录,若事务A随后回滚,事务B读取到的数据就是无效的“脏”数据。
  2. 不可重复读
    • 问题阐述:在同一个事务内,多次读取同一数据返回的结果不一致。
    • 产生原因:在事务执行过程中,其他事务对该数据进行了修改并提交。例如事务A读取某条记录,之后事务B修改并提交了该记录,当事务A再次读取该记录时,得到的结果与第一次读取时不同。
  3. 幻读
    • 问题阐述:在一个事务内,按照相同的查询条件多次读取,得到的记录数不一致。
    • 产生原因:其他事务在该事务执行过程中插入或删除了满足查询条件的记录。例如事务A根据某个条件查询出一定数量的记录,之后事务B插入了满足该条件的新记录,当事务A再次按照相同条件查询时,得到的记录数增多了;或者事务B删除了满足条件的记录,事务A再次查询记录数减少。这就像出现了“幻影”一样。
  4. 死锁
    • 问题阐述:两个或多个事务相互等待对方释放锁资源,形成僵持局面。
    • 产生原因:假设事务A持有资源X的锁,想要获取资源Y的锁;事务B持有资源Y的锁,想要获取资源X的锁。此时双方都在等待对方释放锁,从而陷入死锁。在使用B + 树索引时,由于索引结构的特性,不同事务对索引节点和数据页的访问顺序不同,可能导致这种相互等待锁的情况发生。