如何避免mysql死鎖

2021-08-16 09:11:11 字數 419 閱讀 4207

1.經常提交你的事務,小事務更少的傾向於衝突

2.以固定的順序訪問你的表和行,這樣事務就會形成良好的查詢並且沒有思索

3.講精心選定的索引新增到你的表中,這樣你的查詢就只需要掃瞄更少的索引記錄,並且因此可以設定更好的鎖定

4.不要把無關緊要的操作放到事務裡面

5.盡量按照主鍵索引去查詢記錄,範圍查詢增加了鎖衝突的可能性,也不要利用資料庫去做一些額外的計算操作,比如

select  .... where.... order by rand(); 這樣的語句用不到索引,因此將導致整個表中的資料都被鎖住

6.優化sql和表設計,減少同時占用太多資源的情況,減少連線的表,將複雜的sql分解為多個簡單的sql

7.在併發比較高的系統中,不要顯示的加鎖,特別在事務裡顯示的加鎖,如 select 。。。 for update 語句

Mysql如何避免死鎖

這裡為各位讀者介紹一些在innodb引擎使用過程中減少死鎖的建議。正確使用讀操作語句 經過之前文章介紹,我們知道一般的快照讀是不會給資料表任何鎖的。那麼這些快照讀操作也就不涉及到參與任何鎖等待的情況。那麼對於類似insert select這樣需要做當前讀操作的語句 但又不是必須進行當前讀的操作 筆者...

如何避免死鎖

如何避免死鎖 1 使用事務時,盡量縮短事務的邏輯處理過程,及早提交或回滾事務 2 設定死鎖超時引數為合理範圍,如 3分鐘 10分種 超過時間,自動放棄本次操作,避免程序懸掛 3 優化程式,檢查並避免死鎖現象出現 4 對所有的指令碼和sp都要仔細測試,在正是版本之前。5 所有的sp都要有錯誤處理 通過...

如何避免死鎖

什麼是死鎖,如何避免死鎖?執行緒a需要資源x,而執行緒b需要資源y,而雙方都掌握有對方所要的資源,這種情況稱為死鎖 deadlock 或死亡擁抱 the deadly embrace 在併發程式設計中,死鎖 deadlock 是一種十分常見的邏輯錯誤。通過採用正確的程式設計方式,死鎖的發生不難避免。...