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等操作的效率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM