亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

數(shù)據(jù)庫(kù)高并發(fā)情況下重復(fù)值寫入的避免 字段組合約束

 更新時(shí)間:2009年08月05日 23:14:10   作者:  
10線程同時(shí)操作,頻繁出現(xiàn)插入同樣數(shù)據(jù)的問(wèn)題的解決方法。大家可以參考下。
10線程同時(shí)操作,頻繁出現(xiàn)插入同樣數(shù)據(jù)的問(wèn)題。雖然在插入數(shù)據(jù)的時(shí)候使用了:
insert inti tablename(fields....) select @t1,@t2,@t3 from tablename where not exists (select id from tablename where t1=@t1,t2=@t2,t3=@t3)
當(dāng)時(shí)還是在高并發(fā)的情況下無(wú)效。此語(yǔ)句也包含在存儲(chǔ)過(guò)程中。(之前也嘗試線判斷有無(wú)記錄再看是否寫入,無(wú)效)。

因此,對(duì)于此類情況還是需要從數(shù)據(jù)庫(kù)的根本來(lái)解決,就是約束。否則數(shù)據(jù)庫(kù)的原子操作細(xì)不到我所需要的層面。
添加約束的命令行用得人不多,網(wǎng)上每次找SQL語(yǔ)句都累死,還是寫下來(lái)好了。
需要的關(guān)鍵就叫做 字段組合約束唯一性
alter table tablename add CONSTRAINT NewUniqueName Unique(t1,t2,t3)
這樣可以保證三個(gè)字段組合不重復(fù)
在生產(chǎn)系統(tǒng)數(shù)據(jù)庫(kù)的調(diào)整真是錙銖必較。。。。。。
對(duì)于數(shù)據(jù)庫(kù)讀操作的重復(fù)暫時(shí)沒有好的解決方法,就是讀數(shù)據(jù)庫(kù)某些條目同時(shí)將這些條目某個(gè)字段修改為1,然后其他進(jìn)程讀的時(shí)候就不會(huì)重復(fù)讀取。但是在多線程情況下即使我使用了SQL SERVER 2005最新的特性,就是類似update...output into到臨時(shí)表的方法:

update tablename set OnCheck=1,LastLockTime=getdate(),LastChecktime=getdate()
output deleted.ID into @newtb
where ID in
(select id from tablename where Oncheck=0)
還是會(huì)造成重復(fù)讀。難道沒有更好的辦法了嗎?

如果大家有更好的方法,可以發(fā)出來(lái)。

相關(guān)文章

最新評(píng)論