MYSQL-事務中的鎖與隔離級別
阿新 • • 發佈:2020-07-24
1.什麼是鎖
“鎖”顧名思義就是鎖定的意思。
2.作用
在事務ACID特性過程中,“鎖”和“隔離級別”一起來實現“I”隔離性的作用。
3.鎖的類別
排他鎖:保證在多事務操作時,資料的一致性。(在我修改資料時,其他人不得修改)
共享鎖:保證在多事務工作期間,資料查詢時不會被阻塞。
樂觀鎖:多實務操作時,資料可以同時修改,誰先提交,以誰為準
悲觀鎖:多實務操作時,資料只有一個人可以修改
4.多版本併發控制
1.只阻塞修改類操作(排他鎖),不阻塞查詢類操作(共享鎖)
2.樂觀鎖的機制(誰先提交誰為準)
5.鎖的粒度
1.MyIsam:表級鎖
2.Innodb:行級鎖
事務中的隔離級別
1.四種隔離級別
1.RU級別:READ UNCOMMITTED(獨立提交):未提交讀,允許事務檢視其他事務所進行的未提交更改
2.RC級別:READ COMMITTED:允許事務檢視其他事務所進行的已提交更改,檢視不需要重新記入資料庫
3.RR級別:REPEATABLE READ:允許事務檢視其他事務所進行的已提交更改,檢視資料需要重新進入資料庫(InnoDB 的預設級別)
4.序列化:SERIALIZABLE:將一個事務的結果與其他事務完全隔離
2.檢視隔離級別
#檢視隔離級別
mysql> show variables like '%iso%';
3.設定隔離級別
1.設定RU級別
[root@db03 ~]# vim /etc/my.cnf transaction_isolation=read-uncommit
2.設定RC級別
[root@db03 ~]# vim /etc/my.cnf
transaction_isolation=read-commit
4.名詞
1.髒讀:RU級別,執行事務修改資料,被讀取,但是資料最終回滾了,查詢到的資料就是髒讀
2.幻讀:刪除所有表資料,刪除的同時有人插入資料,檢視資料時以為是沒刪乾淨
3.不可重複讀:修改資料後被讀取,被讀取之後再次修改資料,兩次資料不一致