SQLServer 表分區實驗 操作步驟

-- 1 創建數據庫

create database bigData_test

-- 首先添加四個文件組到數據庫

alter database   bigdata_test

 add filegroup   fg1

alter database    bigdata_test

 add filegroup fg2

alter database bigdata_test

 add filegroup fg3

alter database bigdata_test

 add filegroup fg4


-- 添加四個文件分別到四個文件組;指定的文件夾需要先創建

alter database bigdata_test

add file (name =N'file1',filename =N'c:\bigdata\file1.ndf',size =2048kb,filegrowth =1024kb)

to filegroup [fg1]

alter database bigdata_test

add file (name =N'file2',filename =N'c:\bigdata\file2.ndf',size =2048kb,filegrowth =1024kb)

to filegroup [fg2]

alter database bigdata_test

add file (name =N'file3',filename =N'e:\bigdata\file3.ndf',size =2048kb,filegrowth =1024kb)

to filegroup [fg3]

alter database bigdata_test

add file (name =N'file4',filename =N'g:\bigdata\file4.ndf',size =2048kb,filegrowth =1024kb)

to filegroup [fg4]

use master ; -- 下面時刪除分區函數

drop partition function timefun

--刪除分區方案

drop partition scheme timesc  

use bigdata_test ;


  -- 查看分區表信息   系統運行一段時間或者把以前的數據導入分區表後,

   -- 我們需要查看數據的具體存儲情況,即每個分區存取的記錄數,那些記錄存取

   --在那個分區等。我們可以通過$partition.SendSMSPF來查看,代碼如下:  

    select * from timesc

    --   查看分區信息 其中 timefun是分區函數名稱  

     SELECT $partition.timefun(o.addtime)as [part num],min(o.addtime)as min ,

     max(o.addtime) as max ,count(*) AS [Rows In Partition]  

     FROM dbo.tb_bigdataTest AS o   GROUP BY $partition.timefun(o.addtime)

      ORDER BY [part num]

-- 創建分區函數 注意這裏需要在指定的數據庫中創建

create partition function timeFun(datetime)  -- right的含義是分界點的值在右邊表中

as range right for values ('2011-01-01','2012-01-01','2013-01-01')

use bigdata_test

-- 創建分區方案到文件組

create partition scheme timeSC as partition timeFun to (fg1,fg2,fg3,fg4)

-- 創建表 並且將分區方案放到表中的字段中,注意類型要匹配;

-- 注意分區表中是以某個字段爲條件進行的分區;所以不能指定聚簇索引

create table tb_bigdataTest

(

 gui varchar(50) not null default newid(),

 id bigint identity(1,1)  ,

 name varchar(50) ,

 sex varchar(2)   check(sex  in ('男','女')),

 age int ,

 haveMoney decimal(12,2),

 addressInfo varchar(500),

 addTime datetime ,

 memo varchar(50)

)

on timeSC(addtime)

alter table  tb_bigdatatest

drop identity_inserted

-- 定義循環插入數據

declare @aa int =2081148;

declare @sex varchar(2) ='男';

declare @date datetime ='2010-01-01'

set identity_insert  tb_bigdataTest  on

while @aa<30000000

  begin


    insert into tb_bigdataTest

    (id,name,sex,age,haveMoney,addressInfo,addtime,memo)

    values (@aa,

    convert(varchar(20),@aa)+'zhang',@sex,@aa/100,@aa/100,'山東濟南長清雙全村',@date,'')

    if (@sex ='男') set @sex ='女';

    set @aa=@aa+1;

    set @date = case

                when (@aa%5=1) then '2010-01-01'

                when (@aa%5=2) then '2011-01-01'

                when (@aa%5=3) then '2012-01-01'

                when (@aa%5=4) then '2013-01-01'

                when (@aa%5=0) then '2014-01-01'

                else '2010-01-01' end

  end

  set identity_insert tb_bigdataTest   off


SELECT COUNT(*) from tb_bigdatatest

--------- 以上便是表分區的實例;後續會把c#中大數據插入補上


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章