我有一個具有計算價格,折扣,配額,地點,日期,房間等的可用性複雜的SQL查詢在SQL Server緩存查詢結果Asyncronuosly
當訪問者搜索房間,按日期,人物,第一次放置等, 我試過儘快返回第一頁結果。
在第一頁我只是分析前20名的設施的價格,配額,折扣等
現在我想在製作第一頁緩存所有列表中的高速緩存表分頁和過濾。
我的SP是;從緩存表
GetResultsPage:
此SP返回頁面的結果,如果有高速緩存,還是回到第一頁,如果沒有緩存。
CreateCache
該SP計算並插入結果的完整列表到緩存表與CacheId
目前,我從客戶服務呼叫CreateCache
後第一頁返回結果。
我知道,我可以創建C#後臺作業或者是第一請求時,從客戶端發送一個並行請求。但是如果2或3個訪問者同時搜索相同的參數,就會出現同樣的衝突。因爲基於搜索參數的緩存列表。這不是個人的。
我想創建一個SQL代理作業,可同時管理緩存列表。該過程如下所示。
1-請求來'GetResultsPage'
2-如果存在高速緩存和高速緩存的時間不超過30分鐘,結果從高速緩存表
3-返回如果有一個高速緩存和高速緩存的時間超過30分鐘,結果返回首頁
4-如果沒有需要重新創建緩存或緩存我應該調用CreateCache
異步與參數。
5-當CreateCache
正在運行時,另一個CreateCache
不應以相同的參數運行。
我需要關於我的策略的一些建議,並聽取一些有關SQL代理作業的經驗是否對性能有任何負面影響。
而且是否會有它可以運行CreateCache
SP與prameters和防止多個呼叫我將不勝感激工作的例子。
謝謝。
爲什麼你認爲你需要這些? SQL Server已經爲你自己做了大量的緩存。 – RBarryYoung
因爲我想盡快返回第一頁。如果我計算第一頁請求的所有結果。這將需要很長時間。在第一頁之後,客戶端可以選擇價格順序,或者按照某些類別,便利設施等進行過濾。另外,我測試過,緩存在表上的緩存從SQL自己的緩存中返回5倍。因爲有很多邏輯計算。 –