縮表的情形
- 大事務操作:如果一個事務涉及到大量的資料修改、插入或刪除,會佔用表級鎖,影響其他事務的併發操作。
- 長事務:長時間執行的事務會持有鎖資源,導致其他事務等待,增加鎖表風險。
- 無索引或不當索引:沒有或者使用不合適的索引會導致查詢效率低下,需要鎖住更多的行或表。
- 死鎖:兩個或多個事務相互等待對方釋放資源,形成死鎖,導致涉及的表被鎖住。
- 高併發:在高併發環境下,大量的事務同時競爭資源,可能導致某些事務無法獲取所需的鎖,從而影響正常的操作。
- 不同的鎖級別:如果不同事務使用了不同的鎖級別,比如某個事務使用了表級鎖而另一個事務使用了行級鎖,可能導致鎖競爭和表級鎖的出現
如何解決
- 最佳化sql語句
- 分庫分表
- 使用行級鎖,for update\for share
- 避免長事務
- 加入快取
- 定時清理資料,釋放鎖資源