1. 程式人生 > >mysql之innodb鎖的應用

mysql之innodb鎖的應用

--> mysql行鎖  表的搜尋引擎為innodb,支援事務,採用的是行鎖。

--->

首先將mysql 的自動提交設定為0
set autocommit = 0; 

寫輸入完成sql之後需要執行的命令是 commit;命令來執行事務的提交。

-->-- 死鎖問題的產生

mysql存在死鎖檢查的機制、如果檢查存在死鎖的狀態,mysql會自動的進行上一個的鎖的解除操作。但會因此耗費mysql 的效能。

--> 死鎖問題的產生


當用戶一對錶中的第一行加上for update的語句,
使用者二對錶中的第二行有for update的操作
然後使用者一對第二行中的資料進行update的操作。
使用者二對第二行的資料進行修改的時候則會產生死鎖。

在執行完成之後要執行commit的操作,才能完成對檔案的修改的操作。

在更新的時候如果該欄位沒有存在index的情況下  則由行鎖自動的更新為表鎖。
show index form TableName ;
用來檢視mysql的表中的索引的欄位的
在使用的時候儘量的使用主鍵id來進行查詢的操作
避免使用的時候產生 主鍵不存在的情況下 行鎖升級為表鎖

-- 》 保證篩選條件的欄位是存在索引的

--> 間隙鎖

加鎖的時候儘量避免新增範圍鎖,這樣可以避免產生別的使用者無法對資料進行修改的問題。

-->END

-->鎖的建議優化

-->檢視當前系統中存在的鎖的狀態
show status like 'innodb_row_lock%';