臟讀: 不可重覆讀: 幻讀: 鎖: 表級別的意向鎖為了提高效率, 我們能給一張表成功加上一個表鎖的前提是:沒有任何一個事務對這張表的某些行加了鎖。 如果沒有意向表鎖: 如果現在要給一個表加上表鎖。 如果這張表有一千萬行數據,需要全表掃描行,是否有事務鎖定了某行。 如果一張表不使用索引,那麼加一個排他 ...
臟讀:
不可重覆讀:
幻讀:
鎖:
表級別的意向鎖為了提高效率,
我們能給一張表成功加上一個表鎖的前提是:沒有任何一個事務對這張表的某些行加了鎖。
如果沒有意向表鎖:
如果現在要給一個表加上表鎖。
如果這張表有一千萬行數據,需要全表掃描行,是否有事務鎖定了某行。
如果一張表不使用索引,那麼加一個排他鎖會鎖定整張表。
會為每一行數據預設創建一個聚集索引,看起來好像鎖定了整張表
多我們使用唯一索引鎖定了一行數據的時候,此時使用主鍵索引獲取該行的鎖時,依然失敗。
在innodb中因為二級索引底層存儲的依然是主鍵索引。
當我們使用範圍查詢的時候會加鄰鍵鎖 type=range
所命中的行的 左開右閉 和下一個 左開右閉區間
在innodb 推薦使用自增的id作為主鍵索引,在這種情況下 如果我們要去解決幻讀的問題,一定要鎖住下一個左開右閉區間 ?????
如果沒有命中索引掃描全表鎖住整張表