事務的隔離級別有幾種,Mysql-鎖/隔離級別

 2023-10-15 阅读 28 评论 0

摘要:鎖 1.共享鎖:只要有一個人(事務或線程)在查詢,其他人就都不能改,要照顧少數 下面是將所有性別是男的數據都加上共享鎖 select * from table where sex='男' lock in share mode 事務的隔離級別有幾種,2.排他鎖:只要有一個人(事務或線

1.共享鎖:只要有一個人(事務或線程)在查詢,其他人就都不能改,要照顧少數
下面是將所有性別是男的數據都加上共享鎖

select * from table where sex='男' lock in share mode

事務的隔離級別有幾種,2.排他鎖:只要有一個人(事務或線程)在用(增刪改差),其他人就不能用
下面是將所有性別是男的數據都加上排他鎖

select * from table where sex='男'  for update

3.意向鎖:個人理解說意向鎖,不如說成是個標識符,如果標識符存在,就說明該表中的一行或者多行數據正在被其他事務使用,當前事務不能對該表加鎖,如果標識符不存在,則說明表中沒有任何一條數據被其他事務使用,既然不存在,那么其他事物就可以對該表加鎖了,然后操作該表里的任意數據

讀操作

數據庫鎖的級別,快照讀:單一的select * from 表 where條件
當前讀:讀的是最新的數據,讀之前都需要加鎖,增刪改和上文的加鎖都是當前讀

隔離級別

查看mysql的默認隔離級別執行如下語句:select @@tx_isolation
1.不可重復讀:Read Committed保證對讀取到的記錄加鎖 (記錄鎖),存在幻讀現象。

2.可重復讀:Repeatable Read保證對讀取到的記錄加鎖 (記錄鎖),同時保證對讀取的范圍加鎖,新的滿足查詢條件的記錄不能夠插入 (間隙鎖),不存在幻讀現象。

幻讀
解釋1針對結果集.事務A對結果集查詢,顯示出2條記錄,之后事務B插入相同條件的記錄,然后事務A再次用相同條件查詢,結果顯示出3條記錄,和第一次查詢的數據不一致
解釋2.事務A在插入事先檢測不存在的記錄時,驚奇的發現這些數據已經存在了,(事務A檢測完之后事務B正好插入)之前的檢測讀獲取到的數據如同鬼影一般。
網上支持解釋2的通常都自己覺得解釋1是錯誤的,不過我個人看來兩個解釋還真沒什么區別。。。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/137071.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息