本文作者:kris

MySQL中InnoDB的间隙锁问题-mysql 间隙锁

kris 2025-01-30 20:30:06 15
MySQL中InnoDB的间隙锁问题-mysql 间隙锁摘要: mysql有了间隙锁只有能够解决幻读问题吗?不可重复读:在一个未提交的事务里,二次查询结果可能不相同,因为在这个事务执行过程中,外面的 事务可能对这个数据集进行了修改并提交!幻读:...

mysql有了间隙锁只有能够解决幻读问题吗?

不可重复读:在一个未提交的事务里,二次查询结果可能不相同,因为在这个事务执行过程中,外面的 事务可能对这个数据集进行了修改并提交!

幻读:一个事务在操作过程中!有别的事务对此数据集进行了修改并提交,但这些操作第一个事务读不到,等到这个事务提交的时候,便有可能引起明明插入的数据没有查询到,但却出现插入重复的错误!

不可重复读与幻读的区别:

MySQL中InnoDB的间隙锁问题-mysql 间隙锁

图片来源:网络

不可重复读是能读到其它事务已经提交的数据,幻读是读不到其它事务已提交的数据!

间隙锁:间隙锁主要用来防止幻读,用在repeatable-read隔离级别下,指的是当对数据进行条件,范围检索时,对其范围内也许并存在的值进行加锁!

浅谈MySQL存储引擎选择InnoDB与MyISAM的优缺点分析?

MyISAM引擎设计简单,数据以紧密格式存储,所以某些读取场景下性能很好。

但是MyISAM最典型的还是表锁问题,这样会导致长期处于"Locked"状态。而且数据恢复时间长,无事务等问题或短板。

虽然5.1之前MyISAM的读比Innodb快很多,但是在5.1之后,默认引擎已经变为Innodb。

Innodb读写有很大的提高,采用MVCC来支持高并发,针对行加锁,是使用最广泛的存储引擎。

官方建议尽量将MyISAM都换为Innodb。

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/28983.html发布于 2025-01-30 20:30:06
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享