mysql数据库出现幻读,MySQL 幻读怎样处理?_数据库
MySQL 幻讀怎樣處理?
1、MVCC快照,將歷史數(shù)據(jù)存一份快照,在其事件增添與刪除數(shù)據(jù)時(shí),保證當(dāng)前事件來說是不可見的;
多半數(shù)據(jù)庫都完成了多版本并發(fā)掌握,而且都是靠保留數(shù)據(jù)快照來完成的。
以 InnoDB 為例,每一行中都冗余了兩個(gè)字?jǐn)唷R粋€(gè)是行的建立版本,一個(gè)是行的刪除(逾期)版本。版本號(hào)跟著每次事件的開啟自增。事件每次取數(shù)據(jù)的時(shí)刻都邑取建立版本小于當(dāng)前事件版本的數(shù)據(jù),以及逾期版本大于當(dāng)前版本的數(shù)據(jù)。
一般的 select 就是快照讀。
select * from T where number = 1;
2、“next-key”鎖,將當(dāng)前數(shù)據(jù)行與上一條數(shù)據(jù)和下一條數(shù)據(jù)之間的間隙鎖定,保證此范圍內(nèi)讀取的數(shù)據(jù)是一致的。
next-key 鎖包括兩部分
紀(jì)錄鎖(行鎖)
間隙鎖
紀(jì)錄鎖是加在索引上的鎖,間隙鎖是加在索引之間的。(思索:假如列上沒有索引會(huì)發(fā)作什么?)
select * from T where number = 1 for update;
select * from T where number = 1 lock in share mode;
insert
update
delete
引薦教程:《MySQL教程》
以上就是MySQL 幻讀怎樣處理?的細(xì)致內(nèi)容,更多請(qǐng)關(guān)注ki4網(wǎng)別的相干文章!
收藏 | 0
總結(jié)
以上是生活随笔為你收集整理的mysql数据库出现幻读,MySQL 幻读怎样处理?_数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: table数据跑马灯效果
- 下一篇: Android让屏幕保持常亮,不熄屏的三