1. 程式人生 > >SqlServer千萬級以上的數據表查詢優化方案《冷熱數據庫分離》的思路

SqlServer千萬級以上的數據表查詢優化方案《冷熱數據庫分離》的思路

數據表 nbsp microsoft soft 條件 sof 數據庫 最新 一段時間

1.是分庫而不是分表,分表即需要考慮引入分表算法,又影響後續查詢。

2.熱數據只占全部數據的一部分,因此每次優先查詢熱庫,以下情況才查詢冷庫

--a.當查詢條件未命中(結果集為空)時,查詢冷庫。
--b.當查詢條件部分命中時,查詢冷庫。

3.為了區分部分命中和全部命中,可以在熱庫中建一張R表存放每次查詢冷庫的查詢條件和查詢結果數量,每次查詢熱庫時,對比相同查詢條件的查詢結果數量是否一致。一致,則本次查詢結束。不一致,則需要到冷庫中進行查詢。

4.更優方案:不一致的情況,只到冷庫中查詢未查到的數據。此時R表需要存放的不僅是查詢結果數量,還有查詢結果的所有主鍵。

5.舉例說明:100條中80條還是熱數據 20條變成了冷數據 其實應該只是對冷數據庫發起這20條數據的請求。此時需要將R表數據拿出來比對,只查一部分冷數據。

6.熱庫=>冷庫 : 查詢和使用熱數據時,將一段時間不再使用的熱數據移到冷庫。

7.冷庫=>熱庫 :查詢冷庫時,將本次查詢的結果移到熱庫,附上最新查詢日期。

8.數據同步(每次查詢進行或達到一定量級進行)

SqlServer千萬級以上的數據表查詢優化方案《冷熱數據庫分離》的思路