zoukankan      html  css  js  c++  java
  • 关于SQLSERVER表分区的介绍(二)

    关于SQLSERVER表分区的介绍(二)

    分区函数和分区方案的创建和使用方法

    具体设计过程如下:

    (1)首先创建一个名为partionTest的数据库。然后分别为数据库partionTest添加四个文件组,文件组名依次为FileGroup001~FileGroup004,

    然后为该数据库添加四个数据文件,分别命名为File001~File004,并将它们依次保存到文件组FileGroup001~FileGroup004中。

    (2)以数据库partionTest为例,右击数据库partionTest,从其快捷菜单中选择【属性】命令,打开【数据库属性】对话框。选择该对话框中的

    【选择页】列表中的【文件】选项,然后单击选项页的【添加】按钮,为该数据库添加一个文件,将文件的逻辑名命名为File001,然后单击【文件组】

    列中的下拉列表,打卡【partionTest的新建文件组】对话框,在【名称】文本框中输入需要命名的文件组名称,本示例使用FileGroup001,

    如下图所示:

    (3)按照上面介绍的方法创建剩余的3个文件及文件组,最终效果如下图所示:

    注意:默认情况下SQLSERVER2005将使用于逻辑名称相同的名称作为数据库的物理主文件名。因此,如果使用一个统一的文件夹来保存数据库文件,

    就需要注意为不同数据库的数据文件设定不同的逻辑名称。

    (4)做好上述准备工作后,接下来就可以开始创建分区方案和分区函数了。首先创建一个分区函数,所谓分区函数,就是一种用于规定如何将数据划分到不同分区的

    规则函数。在【查询编辑器】窗口中输入下面T-SQL脚本:

    1 USE partionTest
    2 GO
    3 CREATE PARTITION FUNCTION PartionByInt(int)
    4 AS RANGE LEFT FOR VALUES(100,200,300)
    5 GO

    上述T-SQL脚本设置相应的分区划分规则,其中设置了3个数值类型的分区点,分别为100、200、300,并通过关键词LEFT指明了由3个分区点划分的4段分区,

    即(-∞,100)、[101,200]、[201,300]和[301,∞],如果使用关键词RIGHT,分区将变化为[100,199]、[200,299]、[300,399]和[400,499]。单击【执行】

    按钮,创建名为PartionByInt的分区函数。

    (5)切换到【对象资源管理器】中,展开数据库partionTest\【存储】\【分区函数】节点,可以看到刚刚创建的分区函数PartionByInt,如下图所示:

    (6)继续在【查询编辑器】窗口中输入下面的T-SQL脚本:

    1 USE partionTest
    2 
    3 GO
    4 
    5 CREATE PARTITION SCHEME PartionByIntScheme
    6 
    7 AS PARTITION PartionByInt
    8 
    9 TO(FileGroup001,FileGroup002,FileGroup003,FileGroup004);

    上述T-SQL脚本将创建一个名为PartionByIntScheme的分区方案。创建该方案时,通过AS PARTITION指定了用于创建分区方案的分区函数(即前面创建的分区函数PartionByInt)。

    同时,通过关键词TO将创建的分区与文件组FileGroup001~FileGroup004相绑定。单击【执行】按钮,创建该分区方案。

    (7)切换到【对象资源管理器】下,展开数据库partionTest\【存储】\【分区方案】节点,可以看到刚刚创建的分区方案PartionByIntScheme,如下图所示:

    (8)接下来为了演示分区方案的使用方法,在此需要首先创建一个数据表,本示例创建一个名为testPartionTable的数据表。在【查询编辑器】窗口中输入下面的

    T-SQL脚本:

    1 USE partionTest
    2 GO
    3 CREATE TABLE testPartionTable
    4 (ID INT NOT NULL,
    5  ItemNo CHAR(20),
    6  ItemName CHAR(40)
    7 )ON PartionByIntScheme(ID);

    (9)单击【执行】按钮,创建名为testPartionTable的数据表。需要注意的是,在这里创建数据表时,使用了关键词ON来指定需要使用的分区方案,并将字段ID指定为

    分区的依据字段,即根据ID值将数据分别保存于不同的文件(即分区)中。下面使用上面创建的分区方案,向数据表testPartionTable插入数据。在【查询编辑器】

    窗口中输入下面的T-SQL脚本:

     1 USE partionTest
     2 GO
     3 
     4 declare @count int 
     5 set @count=-25
     6 while @count<=100
     7 begin
     8 insert into testPartionTable select 
     9 @count,'ITEM'+convert(varchar(6),@count),'>0 and <100'
    10 set @count=@count+1
    11 end 
    12 
    13 set @count=101
    14 while @count<=200
    15 begin
    16 insert into testPartionTable select 
    17 @count,'ITEM'+convert(varchar(6),@count),'>100 and <200'
    18 set @count=@count+1
    19 end
    20 
    21 set @count=201
    22 while @count<=300
    23 begin
    24 insert into testPartionTable select 
    25 @count,'ITEM'+convert(varchar(6),@count),'>200 and <300'
    26 set @count=@count+1
    27 end
    28 
    29 set @count=301
    30 while @count<=400
    31 begin
    32 insert into testPartionTable select
    33 @count,'ITEM'+convert(varchar(6),@count),'>300 and <400'
    34 set @count=@count+1
    35 end
    36 set @count=401
    37 while @count<=500
    38 begin
    39 insert into testPartionTable select 
    40 @count,'ITEM'+convert(varchar(6),@count),'>400 and <500'
    41 set @count=@count+1
    42 end
    43 
    44 select * from testPartionTable
    45 GO

    (10)上述T-SQL脚本用于向数据表testPartionTable中输入5组数据,这些数据将被自动地插入到4个不同的文件(即4个不同的分区)File001~File004中。单击【执行】按钮,

    运行上述T-SQL脚本,结果如下图:

    (11)如果想要查询指定分区中包含的数据(例如查看第3分区中所包含的记录),可以使用如下T-SQL脚本:

    1 USE partionTest
    2 GO
    3 
    4 select  * from  testPartionTable 
    5 where $PARTITION.PartionByInt(ID)=3
    6 GO

    (12)其中系统函数$PARTITION,用于为指定的分区函数返回分区号,例如$PARTITION.PartionByInt(ID)用于返回给ID所处的分区号。单击【执行】按钮

    所得查询结果如下图所示:

    SQLSERVER的表分区介绍文章就到这里了,写得不好的地方欢迎大家拍砖!!

  • 相关阅读:
    1037. 在霍格沃茨找零钱(20)
    1036. 跟奥巴马一起编程(15)
    Java基础(五)面对对象
    Java基础(四)方法和数组
    Java基础(三)选择和循环结构
    Java基础(一)
    工厂模式(Factory Pattern)
    git 基本操作
    CXF生成客户端遇到的问题
    简单的CRUD(二)
  • 原文地址:https://www.cnblogs.com/grj001/p/12224301.html
Copyright © 2011-2022 走看看