mysql之innodb鎖的應用
阿新 • • 發佈:2018-11-05
--> 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%';