鎖表的情形和如何解決

拥有人鱼线的程序猿發表於2024-04-15
縮表的情形
  • 大事務操作:如果一個事務涉及到大量的資料修改、插入或刪除,會佔用表級鎖,影響其他事務的併發操作。
  • 長事務:長時間執行的事務會持有鎖資源,導致其他事務等待,增加鎖表風險。
  • 無索引或不當索引:沒有或者使用不合適的索引會導致查詢效率低下,需要鎖住更多的行或表。
  • 死鎖:兩個或多個事務相互等待對方釋放資源,形成死鎖,導致涉及的表被鎖住。
  • 高併發:在高併發環境下,大量的事務同時競爭資源,可能導致某些事務無法獲取所需的鎖,從而影響正常的操作。
  • 不同的鎖級別:如果不同事務使用了不同的鎖級別,比如某個事務使用了表級鎖而另一個事務使用了行級鎖,可能導致鎖競爭和表級鎖的出現

如何解決

  • 最佳化sql語句
  • 分庫分表
  • 使用行級鎖,for update\for share
  • 避免長事務
  • 加入快取
  • 定時清理資料,釋放鎖資源

相關文章