MySQL 幻读怎么解决?
程序员文章站
2022-03-23 18:06:56
...
MySQL 幻读怎么解决?
1、MVCC快照,将历史数据存一份快照,在其事务增加与删除数据时,保证当前事务来说是不可见的;
多数数据库都实现了多版本并发控制,并且都是靠保存数据快照来实现的。
以 InnoDB 为例,每一行中都冗余了两个字断。一个是行的创建版本,一个是行的删除(过期)版本。版本号随着每次事务的开启自增。事务每次取数据的时候都会取创建版本小于当前事务版本的数据,以及过期版本大于当前版本的数据。
普通的 select 就是快照读。
select * from T where number = 1;
2、“next-key”锁,将当前数据行与上一条数据和下一条数据之间的间隙锁定,保证此范围内读取的数据是一致的。
next-key 锁包含两部分
记录锁(行锁)
间隙锁
记录锁是加在索引上的锁,间隙锁是加在索引之间的。(思考:如果列上没有索引会发生什么?)
select * from T where number = 1 for update; select * from T where number = 1 lock in share mode; insert update delete
推荐教程:《MySQL教程》
以上就是MySQL 幻读怎么解决?的详细内容,更多请关注其它相关文章!
上一篇: php如何安装memcache扩展
下一篇: php使用双层循环实现九九乘法表的实例
推荐阅读
-
mysql_affected_rows的返回值,该怎么解决
-
mysql数据库中文乱码应该怎么解决,修改配置文件中的字符编码并没有作用
-
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result res,该怎么解决
-
mysql-登陆MySQL提示SQL执行错误#3167,怎么解决?
-
几个MYSQL查询,不知道对不对,该怎么解决
-
MySQL无法读表错误的解决方法(MySQL 1018 error)
-
详解MySQL是如何解决幻读的
-
mysql幻读和不可重复读的区别介绍
-
MySQL无法读表错误的解决方法(MySQL 1018 error)
-
相机内存卡读不出来该怎么解决?