自己總結的關於鎖的理解

2021-08-19 20:47:41 字數 940 閱讀 7206

背景:才來公司的時候,同事讓我自己看看mysql鎖的知識,我理解的有點不對,所以就開始看一些關於鎖的資料和文章,然後總結了一下。

共享鎖就是多個事務對於同一資料可以共享一把鎖,都能訪問到資料 ,但是只能讀不能修改

排他鎖又稱為寫鎖,排他鎖不能與其它鎖共存,如果乙個事務獲得乙個資料行的排他鎖,其它事務就不能在獲得該行的其它鎖,包括共享鎖和排他鎖,但是獲得排他鎖的事務是可以對該行資料進行讀取與修改的

對於共享鎖大家可能很好理解,就是多個事務只能讀資料不能改資料,對於排他鎖大家的理解可能就有些差別,我當初就犯了乙個錯誤,以為排他鎖鎖住一行資料後,其他事務就不能讀取和修改該行資料,其實不是這樣的(資料修改會加鎖,但是排他鎖不能和其它鎖共存所以不能修改資料)。排他鎖指的是乙個事務在一行資料加上排他鎖後,其他事務不能再在其上加其他的鎖。mysql innodb引擎預設的修改資料語句,update,delete,insert都會自動給涉及到的資料加上排他鎖,select語句預設不會加任何鎖型別,如果加排他鎖可以使用select ...for update語句,加共享鎖可以使用select ... lock in share mode語句。所以加過排他鎖的資料行在其他事務種是不能修改資料的,也不能通過for update和lock in share mode鎖的方式查詢資料,但可以直接通過select ...from...查詢資料,因為普通查詢沒有任何鎖機制。

當在乙個session中對一條資料加了共享鎖以後,在另乙個session中,我們可以用普通查詢和共享鎖查詢,但是不能使用排他鎖查詢資料,因為在一條資料上面,這兩個鎖是不能共存的

當在乙個session中對一條資料加了排他鎖以後,在另外乙個session上面查詢普通查詢可以查出資料,但是使用加共享鎖和排他鎖的模式查詢,都查不到資料

innodb引擎中,update、delete、insert語句會自動的加上排他鎖的,使用普通查詢可以查到資料,但是資料是以前的資料,當我們把資料提交,鎖就釋放了,現在就都能查詢資料了

自己關於排序的總結

所有排序的總結 1 插入排序 插入排序是最簡單最直觀的排序演算法了 它的依據是 遍歷到第 n個元素的時候前面的 n 1個元素已經是排序好的了 那麼就查詢前面的 n 1個元素把這第 n個元素放在合適的位置 如此下去直到遍歷完序列的元素為止.插入排序是最簡單最直觀的排序演算法了 它的依據是 遍歷到第 n...

關於遞迴自己的總結

最近可能是旁邊各種人都準備找工作的事情,讓我也感覺有一些慌張了,甚至有的時候我都不知道我學計算機是真正的喜歡還是為了找工作 好在最近自己思考了一下,並且飛餅同學讓我知道了一些事情,她說的一句話我很喜歡,就當我畢生要完成的事情 平靜地承認自己的不足,並解釋不足的原因,讓自己像秤砣一樣穩穩地沉下去,回到...

自己關於uview 的元件理解

其中u image 可以支援width,height和mode,shape,也可以支援錯誤的情況下,使用一張預設的的,今日進行深入研究,做個備註 原因 是通過或者widh和height,進行乙個叫addunit的函式來進行數字驗證,如果是純數字的話,就加上rpx,如果不是,就直接返回原來的數值原因 ...