日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > 多線程下不重復讀取SQL Server 表的數(shù)據(jù)

多線程下不重復讀取SQL Server 表的數(shù)據(jù)

來源:程序員人生   發(fā)布時間:2014-11-17 08:41:50 閱讀次數(shù):3541次

在進行1些如發(fā)送短信、郵件的業(yè)務(wù)時,我們常常會使用1個表來存儲待發(fā)送的數(shù)據(jù),由后臺多個線程不斷的從表中讀取待發(fā)送的數(shù)據(jù)進行發(fā)送,發(fā)送完成后再將數(shù)據(jù)轉(zhuǎn)移到歷史表中,這樣保證待發(fā)送表的數(shù)據(jù)1般情況下不會太多。如待發(fā)送表結(jié)構(gòu)為:

Create Table SMS(ID int not null identity(1,1),Content varchar(1024),Status int not null,CreateTime datetime);

Status 取值:0未讀取 1已讀取

這樣設(shè)計的好處是,不會由于后端有時發(fā)送過慢致使前端接收發(fā)送消息的要求出現(xiàn)問題,如發(fā)送短信的業(yè)務(wù),有時由于運營商的網(wǎng)關(guān)緣由發(fā)送太慢,這樣前端可以先將用戶的發(fā)送要求全部放在待發(fā)送表中,由后端進行漸漸發(fā)送。

在后端發(fā)送進程1般使用

Select top 100 * From SMS Where Status=0;這樣的SQL取出未被讀取的數(shù)據(jù)。

為了提高后端發(fā)送能力,需要部署多個進程同時從待發(fā)送表中取出數(shù)據(jù)進行發(fā)送,這樣有時就會造成同1個記錄被多個進程同時取出來,并發(fā)送的情況。

今天查了1下SQL Server 的MSDN,發(fā)現(xiàn)可以通過先更新同時通過deleted表(就像是在觸發(fā)器中使用1樣)取出的方式,來保證每條記錄只會被讀取1次。

declare @Rowid table(rowid int);
BEGIN
set rowcount 100; --1次讀取的行數(shù)
--先將要讀取的記錄狀態(tài)更新
update Sms set [status]= 1 output deleted.ID into @Rowid Where [status] = 0;
--讀取剛更新狀態(tài)的記錄
select * from Sms where ID in (select Rowid from @Rowid);
END

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩一二三四 | 久久国产高清 | 国产成人精品一区二 | 欧美日本韩国在线 | 成网站人电影亚洲国产 | 一区欧美 | 黄色激情网址 | 国产日韩精品久久 | 日本一区二区三区在线观看 | 国产精品久久久久久久久久 | 欧美日韩色 | 久久久久国产精品一区三寸 | 国产精品久久久久久久久久久久久 | 91久久精品一区 | 久久久亚洲国产精品麻豆综合天堂 | 男女毛片 | 欧美一区二区大片 | 91看片淫黄大片91桃色 | 亚洲精品久久久久国产 | 亚洲毛茸茸少妇高潮呻吟 | 国产精品久久久av | 日韩精品视频在线播放 | 欧洲av不卡 | 国产成人精品一区二区三区在线 | 国产伦精品一区二区三区精品视频 | 免费在线性爱视频 | 交视频在线观看国产 | 精品一区二区免费视频 | 国产天堂 | 欧美在线一区二区 | 亚洲国产精品国自产拍av秋霞 | 日本免费视频 | 国产4区 | 欧美日韩另类一区 | 韩国一级片在线播放 | 久久精品2 | 成年网站在线观看 | 激情婷婷综合 | 精品久久精品久久 | 91精品国产三级a在线观看 | 韩日电影在线观看 |