Sql-Server
分區視圖 - 索引儲存
我有一個包含 40 億行的表,我計劃將這些行拆分為一年中每個季度的單獨表。然後我想在所有表中創建一個分區視圖。
目前,我有一個用於數據的文件組(大部分數據所在的位置)和一個用於非聚集索引的文件組(我一直在緩慢地將索引遷移到該文件組)
數據文件組和非聚集索引文件組位於不同的磁碟上。
各個表將添加主鍵和非聚集索引。我應該把這些放在哪裡?(就文件組而言)我應該為每個表、每種類型的索引等創建文件組嗎?
注意:我不能使用數據分區,因為我們沒有企業版。
如果您使用傳統的分區視圖,每個表包含不同的年度季度,那麼您在這裡有幾個級別的分離:
- 每張桌子
- 每個表上的每個索引
換句話說,假設您有 10 個分區視圖訪問的表,並且每個表都有一個聚集索引和一個非聚集索引。在這種情況下,您正在查看需要相應放置的 20 種不同的資料結構。
至於把這些放在哪裡,很大程度上取決於你的工作量。例如,如果只有最近的兩個季度表獲得最多的報告查詢和數據修改,您需要確保它們是分開的。但在同樣的方面,您可以受益於這些表中的每一個都將其索引放在不同的磁碟上。
我在這裡說磁碟是因為文件組是數據庫數據文件的邏輯分組。即使您將每個表和每個索引拆分到它們自己的文件組中(誇大以說明一點),但所有包含的數據文件都位於同一組物理磁碟上,那麼您也不會真正看到任何底層 I/O 性能提升。 那時真的只是行政管理。 在從設計中擠出性能時,您不能總是將物理層和邏輯層分開。
因此,您需要直覺地佈置物理磁碟分離,您將接收哪種類型的常見工作負載,並以這種方式設計您的數據放置。