(四)SQL Server分區管理

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

一、拆分分區(SPLIT)

在已有分區上添加一個新分區。

如所示,將分區03拆分成03和04分區,拆分方式先鎖定舊03分區的所有資料,後將舊03分區相關資料移轉到分區04,最後刪除舊03上的對應分區資料;這種操作大量消耗io,造成的io日誌讀寫是轉移資料的四倍。因此在管理分區上,一般提前添加分區;例如當前03分區沒有資料的情況下,我們完成04分區的添加。

添加分區步驟:

1、指定下一個分區的檔案組

2、拆分分區

--添加分區USE [PartionTest]ALTER PARTITION SCHEME [pc_PartionTest01] NEXT USED [PartionTest201412]USE [PartionTest];ALTER PARTITION FUNCTION [pf_PartionTest01]() SPLIT RANGE(‘2014-12-11‘)

表示分區添加成功:

 二、合并分區(Merge)

分區資料的遷移後,需要分區合并,也就是將無用分區刪除,分區合并同拆分一樣,會造成大量的io消耗;因此通常會將此分區資料切分出去,分區無資料則可以合并相關分區。

由於合并是將兩個分區合并,因此存在是將需要合并的分區界限點往左合并還是往右合并呢?這取決於Range 方式,若Range LEFT 則 往右合并,RANG RIGHT 則往左合并。

通過以上拆分分區得出的分區4,現將分區4合并,有餘Range right分區方式,因此分區4是往左合并,將合并到分區3。以下執行結果可以證明此觀點。

USE [PartionTest];ALTER PARTITION FUNCTION [pf_PartionTest01]() Merge RANGE(‘2014-12-11‘)
通過可以看出:只剩下分區3
四、分區切換(SWITCH PARTITION )

切換分區可以快速有效管理資料子集。可以使用ALTER TABLE …SWITCH PARTITION ..語句。在分區移動時,只是修改相關的中繼資料,並未移動資料;因此切換速度非常快。

切換分區需要符合以下要求:http://msdn.microsoft.com/zh-cn/library/ms191160(v=sql.105).aspx

1、原表與目標表結構必須相同,且必須在同一個檔案組中。

2、目標表或者分區必須是空的。

3、若源表存在聚集分區索引,則要求目標表也需要有同樣的聚集分區索引。

4、源表的所有索引必須與源表分區對齊。

5、若目標表存在索引,約束,外鍵,要求源表必須與目標表相同結構的索引,約束,外鍵。

6、目標表和源表都不能存在複製分發。

7、分割資料行是否可為空白的約束必須相同。

 

一般切換分區可以做如下處理:

  1. 將現有表作為分區分配到現有的資料分割資料表。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH TO [dbname].[dbo].[staging_tablename] PARTITION source_partition_number_expression

  2. 將分區從一個資料分割資料表切換到另外一個資料分割資料表中。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH PARTITION source_partition_number_expression TO [dbname].[dbo].[staging_tablename] PARTITION source_partition_number_expression

  3. 將一個分區切換到現有表中。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH PARTITION source_partition_number_expression TO [dbname].[dbo].[staging_tablename]



 

 

四、$PARTITION

為任何指定的分區函數返回分區號,一組分區列值將映射到該分區號中。

[ database_name. ] $PARTITION.partition_function_name(expression)
/*返回某個值屬於某個分區*/SELECT $PARTITION.pf_PartionTest01(‘2014-12-26 00:00:00.000‘)/*查詢某個分區的所有值*/select * from [dbo].[PartionTest01]where $PARTITION.pf_PartionTest01(salesDate)=2

(四)SQL Server分區管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.