Partition--分区总结
?
1. 在SQL SERVER 2008 R2 SP2之前版本,對分區只支持到1000個分區,之后版本支持到15000個分區。
2. 分區索引對齊并不要求索引和表使用同一分區方案,但要求兩者使用的分區方案本質相同,即:
??????? 1) 分區函數的參數具有相同的數據類型;
??????? 2) 分區函數定義了相同數目的分區;
??????? 3) 分區函數為分區定義了相同的邊界值。
3. 分區合并:合并邊界值所在的分區被刪除,然后向鄰近的分區合并。
4. 查看指定值所屬分區:SELECT $PARTITION.partitionFunctionName('express')
5. 查詢指定分區的數據:
??? SELECT * FROM [dbo].[TB1]
??? WHERE $PARTITION.pf_Test(PID)=$PARTITION.pf_Test(2155)
6. 將非分區表裝換成分區表:刪除聚簇索引,新建聚簇索引并指定分區鍵和分區函數,重建非聚簇索引。
7. 對不在同一文件組的兩個分區進行合并,需要考慮合并照成的IO影響,對處于同一個文件組的兩個分區合并,不會造成過多IO影響。
8. 合并分區:ALTER PARTITION FUNCTION patitionFunctionName() MERGE RANGE(rangeValue)
9. 拆分分區:
??? 1)指定新分區使用文件組:
??????????? ALTER PARTITION SCHEME partitionSchemaName?
??????????? NEXT USED fileGroupName;
??? 2)修改邊界值:
??????????? ALTER PARTITION FUNCTION? partitionFunctionName? ()??
??????????? SPLIT RANGE (rangeValue)
10. 可以對兩個相鄰的分區進行合并,如果兩個分區都不為空,那么合并可能耗費大量時間和資源。
12. 在內存低于16GB的服務器上,不推薦使用超過1000的分區
13. 在分區表上創建非聚集非對齊索引時,會同時對所有分區上創建排序表,因此需要使用大量內存,當內存不足時,創建失敗。
14. 在分區表上創建非聚集對齊索引時,會依次在每個分區上創建排序表,由于創建排序表過程是串行執行,因此不會使用大量內存從而使性能下降。
15. 當內存有壓力時,如需要在分區數較大的分區表上建立非聚集非對齊索引時,可修改最大并行度為較小值來降低創建索引的內存使用。
16. 在使用分區表時,應該檢查和修改分區表的鎖升級
--==================================== --查看表的鎖升級設置 SELECT TB.name AS TableName, TB.[lock_escalation], TB.[lock_escalation_desc] FROM sys.tables TB WHERE TB.name='TB1'--================================== --將表的鎖升級設置為AUTO ALTER TABLE [dbo].[TB1] SET (LOCK_ESCALATION = AUTO )
?
?
優點:
1. 分區可以使得單個分區表或分區索引中數據大大減少,從而提高查詢和索引重建和整理的速度。
2. 將數據合理分散到多個分區后,可以有效解決數據熱點問題。
3. 表分區和索引分區使用同一個分區函數時,可以快速地換出和換出某個分區的數據,在清理歷史數據時很有效。
4. 當有多組磁盤時,可以使用分區將磁盤壓力分散到多組磁盤上,來提高磁盤使用率。
?
缺點:
1. 當查詢需要跨越多個分區時,可能會造成邏輯讀取較高,對多個分區數據合并可能會導致CPU過高(SORT MERGE OR HASH MERGE)
2. 在分區表上建立唯一索引時,如唯一索引也使用相同分區函數,則有利于將數據按區遷出和遷入,但唯一索引必須附帶分區鍵,會影響對整表求MAX/MIN等操作的效率
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的Partition--分区总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: using 语句中使用的类型必须可隐式转
- 下一篇: 《Genesis-3D游戏引擎系列教程-