摘自: https://www.csdn.net/gather_2f/MtTaIgxsMTM5NC1ibG9n.html
鎖表的原因:
當多個連接(數據庫連接)同時對一個表的數據進行更新操作,那么速度將會越來越慢,持續一段時間后將出現數據表被鎖的現象,從而影響到其它的查詢及更新。
例如:
存儲過程循環30次更新操作(cycore_file_id 為唯一標識)
/*30次更新操作*/
BEGIN DECLARE v1 INT DEFAULT 30; WHILE v1 > 0 DO update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; SET v1 = v1 - 1; END WHILE; END
執行結果(速度非常慢)
時間: 29.876s
Procedure executed successfully
受影響的行: 0
200個數據更新操作,三個數據庫連接同時執行
update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; update jx_attach set complete=1,attach_size=63100 where cycore_file_id='56677142da502cd8907eb58f'; ...等等
執行結果(持續一段時間后速度越來越慢,出現等待鎖)
# Time: 151208 22:41:24