帮忙么网 > MySQL > 当前页面

什么是脏读、幻读、不可重复读的?

2025-01-10 NEW个对象

脏读:读到其它事务没有提交的数据
不可重复读:能够读到其它事务已经提交的数据,在事务第二次读取数据的时候,前后不一致。
脏读:当一个事务insert数据之后,当前事务读取的条数不一致

如何解决脏读、幻读、不可重复读的?

Innodb主要通过mvcc机制和间隙锁来解决的

脏读:设置隔离级别读已提交,事务只能读取到事务已经提交的数据。

在读已提交隔离级别下,innodb获取的是最新的事务id,从而获取到最新的提价数据。

不可重复读:设置隔离级别可重复读。

可重复读事务开启前后,事务id是一样的,所以获取的数据是一样的。

幻读:设置隔离级别可串行化。

可以彻底解决幻读问题,但是性能很差,因为读写都要加锁。

相关文章

  • 什么是脏读、幻读、不可重复读的?

    脏读:读到其它事务没有提交的数据 不可重复读:能够读到其它事务已经提交的数据,在事务第二次读取数据的时候,前后不一致。 脏读:当一个事务insert数据之后,当前事务读取的条数不一致

    NEW个对象 2025-01-10

  • binlog存放的内容是什么

    Binlog(Binary Log)是MySQL中记录数据库中所有DDl语句DML语句的二进制日志文件,主要用于记录对数据库执行的更改操作(例如INSERT、UPDATE、DELETE等)。

    NEW个对象 2024-10-13

  • 索引失效的问题如何排查?

    当然是使用explain关键字来分析SQL了。 当用explain关键字来分析SQL的时候,主要查看key、type、extra这三个关键字。 如果key是NULL、type是ALL,extra是use where,那么就是没有走索引。

    NEW个对象 2025-01-09

推荐文章