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