MSSQL Server 創建分區表
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
分區表的主要目的: 1、是為了改善大型表以及具有各種訪問模式的表的可伸縮性和可管理性。 分區一方面可以將數據分為更小、更易管理的部分,為提高性能起到一定的作用; 另一方面,對于如果具有多個CPU的系統,分區可以是對表的操作通過并行的方式進行。 2、創建分區表或分區索引的步驟 可以分為以下步驟: 1. 確定分區列和分區數 2. 確定是否使用多個文件組 3. 創建分區函數 4. 創建分區架構 5. 創建分區表 6. 創建分區索引 第一、創建分區表的第一步,先創建數據庫文件組,但這一步可以省略,因為你可以直接使用PRIMARY文件。 為了方便管理,還是可以先創建幾個文件組,這樣可以將不同的小表放在不同的文件組里,既便于理解又可以提高運行速度。 創建文件組的方法很簡單,打開SQL Server Management Studio,找到分區表所在數據庫, 右鍵單擊,在彈出的菜單里選擇“屬性”。然后選擇“文件組”選項,再單擊下面的“添加”按鈕 第二,創建了文件組之后,還要再創建幾個數據庫文件。 因為分區的小表必須要放在硬盤上的文件里. 再說,文件組中沒有文件,文件組就是多余的了. 選擇“文件”選項,然后添加幾個文件。在添加文件的時候要注意: 1、不要忘記將不同的文件放在文件組中。當然一個文件組中也可以包含多個不同的文件。 2、如果可以的話,將不同的文件放在不同的硬盤分區里,最好是放在不同的獨立硬盤里。 要知道IQ的速度往往是影響SQL Server運行速度的重要條件之一。 將不同的文件放在不同的硬盤上,可以加快SQL Server的運行速度。 第三、創建分區函數。 -- 創建分區函數的目的是告訴SQL Server以什么方式對分區表進行分區。 -- 若分區函數存在則先drop掉 -- 創建分區函數給后面的分區方案使用,分區函數就是指定一個范圍確定在某個值為什么的時候放在那個分區上 IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = N'partf_hc') DROP PARTITION FUNCTION [partf_hc] CREATE PARTITION FUNCTION partf_hc (datetime) AS RANGE RIGHT FOR VALUES ('2015-01-01', '2016-01-01') --1、CREATE PARTITION FUNCTION意思是創建一個分區函數。 --2、partfunSale為分區函數名稱。 --3、AS RANGE RIGHT為設置分區范圍的方式為Right,也就是右置方式。 --4、FOR VALUES ('2015-01-01', '2016-01-01')為按這幾個值來分區。 第四、創建分區架構。 -- 分區方案的作用是將分區函數生成的分區映射到文件組中去。告訴SQL Server將已分區的數據放在哪個文件組中。 -- 看分區方案是否存在,若存在先drop掉 IF EXISTS (SELECT * FROM sys.partition_schemes WHERE name = N'parts_hc') DROP PARTITION SCHEME [parts_hc] GO --創建分區方案,分區方案需要指定一個分區函數,并指定在分區函數中分的區需要放在哪一個文件組上 create partition scheme parts_hc AS PARTITION [partf_hc] TO (HC2014,HC2015,HC2016) GO -- 1、CREATE PARTITION SCHEME意思是創建一個分區方案。 -- 2、parts_hc 為分區方案名稱。 -- 3、AS PARTITION partf_hc 說明該分區方案所使用的分區函數為partf_hc。 -- 4、TO后面的內容是指partf_hc分區函數劃分出來的數據對應存放的文件組。 --創建分區表 if object_id('hitcount','U') is not null drop table hitcount; go create table hitcount ( [hitdate] [datetime] NOT NULL, [songid] [nvarchar](20) NOT NULL, [hitcount] [int] NULL ) on parts_hc(hitdate) --在此處指定該表要使用的分區方案,并將指定分區依據列 go -- 1、跟創建普通數據表差不多,需要注意的是不能再創建聚集索引, -- 因為聚集索引可以將記錄在物理上順序存儲的, -- 而分區表是將數據分別存儲在不同的表中,這兩個概念是沖突的 -- 2、on parts_hc說明使用名為 parts_hc 的分區方案。 -- 3、(hityear)表示用于分區條件的字段是hityear。 -- 插入測試數據 insert into hitcount values ('2013-01-01 00:00:00', '001102', 1); -- 這條數據在1分區上 insert into hitcount values ('2014-01-01 00:00:00', '001102', 1); -- 這條數據在1分區上 insert into hitcount values ('2015-01-01 00:00:00', '001102', 1); -- 這條數據在2分區上 insert into hitcount values ('2016-01-01 00:00:00', '001102', 1); -- 這條數據在3分區上 insert into hitcount values ('2017-01-01 00:00:00', '001102', 1); -- 這條數據在3分區上 -- 查看全部紀錄 select * from hitcount -- 查看紀錄分部情況 select *, $partition.partf_hc(hitdate) as 分區 from hitcount 該文章在 2024/7/22 10:41:43 編輯過 |
關鍵字查詢
相關文章
正在查詢... |