innodb中不同語句設定不同鎖型別

2021-07-27 01:15:13 字數 943 閱讀 8059

在鎖讀的過程中,乙個update 或乙個delete 經常設定記錄鎖在每乙個索引記錄上。這與where條件中是否排除此條索引記錄沒有關係。innodb認不出擴充套件的where擴充套件條件,只會認出那些索引區間被掃瞄。the locks are normally 

next-key locks

that also block inserts into the 

「gap」

immediately before the record。通常,gap locking不能顯示使用,導致next-key locking 也不能用。大多數情況下,事務隔離級別也會影響lock的設定。

如果乙個二級索引在查詢記錄過程中使用,那麼索引記錄被設定x-lock。如果沒有滿足的索引,那麼將是全表掃瞄,表中每一條記錄都會比鎖定。併發降低,效率下降,建立好的索引會掃瞄不必要的記錄。

select ..... for update or select .... lock in share mode 下,掃瞄記錄 請求locks。

innodb 設定的特定鎖型別

select ......from 鎖定讀,讀取資料庫快照而不用設定locks。在serializable level,在索引記錄將設定 next-key locks

select .... from ...lock in share mode 在全部的索引記錄上設定乙個共享的next-key locks,只有掃瞄是唯一索引時設定record lock。

select.... from .... for update 在全部的索引記錄上設定乙個排他的next-key locks,只有掃瞄是唯一索引時設定索引記錄鎖。

update.....where ....設定排他的next-key lock。但是只有掃瞄唯一索引記錄時設定索引記錄鎖

delete......where.... 設定排他的next-key lock。但是只有掃瞄唯一索引記錄時設定索引記錄鎖

UILable設定不同顏色不同字型

在專案開發中,我們經常會遇到在這樣一種情形 在乙個uilabel 使用不同的顏色或不同的字型來體現字串,在ios 6 以後我們可以很輕鬆的實現這一點,官方的api 為我們提供了uilabel類的attributedtext,使用不同顏色和不同字型的字串,我們可以使用nsattributedtext ...

tabBar選擇不同item設定標題不同顏色

在開發中常常遇到帶tabbar的應用,這些應用一般都是只有乙個選中顏色,但在開發中也會遇到選擇不同item選中顏色不一致的情況,這時要如何解決呢?方法一 不設定item title 全讓ui切成,這時只要我們設定不同的即可。方法二 再點選item的 方法中設定不同的tintcolor。void ta...

myisam和innodb索引實現的不同

myisam引擎使用b tree作為索引結構,葉節點的data域存放的是資料記錄的位址。下圖是myisam索引的原理圖 這裡設表一共有三列,假設我們以col1為主鍵,則上圖是乙個myisam表的主索引 primary key 示意。可以看出myisam的索引檔案僅僅儲存資料記錄的位址。在myisam...