我正在填充充當緩存的表。 (這是必要的,因爲該數據來自通過鏈接服務器,並通過鏈接太貴連接)SQL - 如何臨時保護此表中的數據?
我已經包括僞代碼下面有希望證明什麼,我試圖做的。我真的不知道,如果有鎖定一個表下來這樣的方式,或者如果我需要使用事務,但這裏的基本知識:
- 在Cache表
- 刪除所有內容填充cache表
- 過程中Cache表中的數據,持續10秒(這個存儲過程的其他實例不會在處理過程中刪除cache表是很重要的!)
- 返回處理結果(cache表再次空閒)
delete from CacheTable -- If this errors because it is locked, exit stored procedure
[[Lock CacheTable]]
insert into CacheTable
exec RemoteDB.dbo.[sp_GrabRecords] @Start, @End, @Key
Process Cached Data
...
Select Processed Data
[[Unlock CacheTable]]
如何在正在處理的同時保護此CacheTable中的數據?
注:我也在尋找替代品。我嘗試使用表變量,但它太慢了,可能是因爲它沒有主鍵。甚至不知道表變量是否可以有主鍵。我只知道上面的方法是非常快,但它與衝突的問題,顯然
我不是在SQL-Server作爲深諳這些天。 CacheTable是否與臨時表相同?爲什麼不能用時間戳名稱創建臨時表? – vol7ron 2010-08-03 23:24:12
我從來沒有使用臨時表,我想這是一個選項。在這個印象中,他們與標準表格沒有多大區別,但是根據Dan的回答,SP的每個實例可能都會得到它自己的臨時表格版本。如果是這樣的話,那麼我的問題就解決了,只是等待一些驗證 – 2010-08-03 23:31:42