什么是活鎖什么是死鎖 sql數(shù)據(jù)庫為什么會經(jīng)常鎖表?
sql數(shù)據(jù)庫為什么會經(jīng)常鎖表?只有一個(gè)真理!你的設(shè)計(jì)太水了。。我在回答問題“數(shù)據(jù)庫何時(shí)會死鎖”時(shí)提到過?為了保證數(shù)據(jù)的一致性,防止并發(fā)影響數(shù)據(jù)的正確性,數(shù)據(jù)庫通常采用鎖的方法!關(guān)于數(shù)據(jù)庫鎖定機(jī)制死鎖的
sql數(shù)據(jù)庫為什么會經(jīng)常鎖表?
只有一個(gè)真理!你的設(shè)計(jì)太水了。。
我在回答問題“數(shù)據(jù)庫何時(shí)會死鎖”時(shí)提到過?為了保證數(shù)據(jù)的一致性,防止并發(fā)影響數(shù)據(jù)的正確性,數(shù)據(jù)庫通常采用鎖的方法
!關(guān)于數(shù)據(jù)庫鎖定機(jī)制死鎖的原因,請參考我的答案?;氐竭@個(gè)問題,為什么數(shù)據(jù)庫經(jīng)常鎖定表?
鎖定表的意義非常明顯,即表數(shù)據(jù)被鎖定,導(dǎo)致其他事務(wù)無法訪問表中的數(shù)據(jù)!可能的原因是什么?
1. 字段沒有索引:執(zhí)行事務(wù)時(shí),如果表中沒有索引,將執(zhí)行完整的表掃描。如果此時(shí)出現(xiàn)其他事務(wù),則會發(fā)生表鎖
!2. 事務(wù)處理時(shí)間長:事務(wù)處理時(shí)間長。當(dāng)越來越多的事務(wù)堆積起來時(shí),就會發(fā)生表鎖定
!如何解決鎖表問題?
1、通過相關(guān)的SQL語句可以找出它是否被鎖定,以及被鎖定的數(shù)據(jù)
!2. 鎖定時(shí)間限制,防止無限死鎖
!3. 避免全表掃描
!4. 試著按順序操作數(shù)據(jù)
!5. 根據(jù)引擎選擇合理的鎖粒度
!6、事務(wù)處理時(shí)間應(yīng)盡可能短!