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