详细讲解SQL Server 2005的表分区操作

  • 来源: 赛迪网 作者: 若水   2008-03-25/14:33
  • 对现有的数据库中新建一个表进行分区

    示例:

    --创建文件组
    /**//*
    为数据库[Mydb]添加4个文件组
    */
    ALTER DATABASE Mydb ADD FILEGROUP [MydbSF1]
    ALTER DATABASE Mydb
    ADD FILE 
    (NAME ='MydbSF1',
    FILENAME = 'D:db abuTbMydbSF1.ndf',
    FILEGROWTH=1,
    MAXSIZE = UNLIMITED
    )TO FILEGROUP 
    ALTER DATABASE Mydb ADD FILEGROUP [MydbSF2]
    ALTER DATABASE Mydb
    ADD FILE 
    (NAME = N'MydbSF2',
    FILENAME = 'D:db abuTbMydbSF2.ndf',
    FILEGROWTH=1,
    MAXSIZE = UNLIMITED)
    TO FILEGROUP 
    ALTER DATABASE Mydb ADD FILEGROUP [MydbSF3]
    ALTER DATABASE Mydb
    ADD FILE 
    (NAME = N'MydbSF3',
    FILENAME = N'D:db abuTbMydbSF3.ndf',
    FILEGROWTH=1,
    MAXSIZE = UNLIMITED)
    TO FILEGROUP 
    
    ALTER DATABASE Mydb ADD FILEGROUP [MydbSF4]
    ALTER DATABASE Mydb
    ADD FILE
    (NAME = N'MydbSF4',
    FILENAME = N'D:db abuTbMydbSF4.ndf',
    FILEGROWTH=1,
    MAXSIZE = UNLIMITED)
    TO FILEGROUP [MydbSF4]
    /**//*
    添加文件组结束
    */
    --创建分区函数
    /**//*
    以数据库表中ID为参考,此处是以1~10,11~20,
    21~30,31~&做为4个表分区的界限
    */
    CREATE PARTITION FUNCTION pf_Product_Sell (int)
    AS RANGE RIGHT FOR VALUES (10, 20, 30)
    /**//*
    将分区界限分别放入4个不同的文件组中
    */
    CREATE PARTITION SCHEME [ps_Product_SchemeSell] AS PARTITION
    pf_Product_fabu TO (MydbSF1,MydbSF2,MydbSF3,MydbSF4)
    --创建表(在文件组的表分区上)
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Sell](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [userid] [int] NOT NULL
    CONSTRAINT [PK_Sell] PRIMARY KEY CLUSTERED 
    (
    [id] ASC
    )WITH (PAD_INDEX   = OFF, STATISTICS_NORECOMPUTE   = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS   = ON, ALLOW_PAGE_LOCKS   = ON) ON [ps_Product_SchemeSell]([id])
    )
    /**//*
    接下来即可以插入数据...
    然后用下面的那个查询语句查看PF中的值
    是否已经吧不同数据放在不同的分区中了
    */
    SELECT *, $PARTITION.[pf_Product_Sell](ID) AS PF
    FROM sell
    /**//*
    注意:创建分组文件的时候.必须设置自动增长,
    并且不要将最大值设为不限,否则在插入数据的时候会
    出现错误。
    */

    这样处理的好处是:在像上G级别以上单表的数据操作不必每次操作超大的数据库文件了。而且对I/O物理磁盘瓶颈的减轻十分有效。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多