zoukankan      html  css  js  c++  java
  • SQL server 2005 中的分区表(代码示例)

    在SQL server 2005中一个新的特性——分区表。

    建立分区表的步骤:
    1 创建数据库(必须在多个文件组中)
    2 创建分区函数
    3 创建分区Scheme
    4 创建分区表

    USE master;
    GO
    IF OBJECT_ID (N'PartitionDataBase'IS NOT NULL
    DROP DATABASE PartitionDataBase;
    GO
    /* CREATE DATABASE */
    CREATE DATABASE PartitionDataBase
    ON PRIMARY
    (
    NAME 
    = N'File_A_H',FileName = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PartitionDataBase_AH.mdf'
    ),
    FILEGROUP FileGroup_I_N
    (
    NAME 
    = N'File_I_N',FileName = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PartitionDataBase_IN.mdf'
    ),
    FILEGROUP FileGorup_M_Z
    (
    NAME 
    = N'File_M_Z',FileName = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PartitionDataBase_MZ.mdf'
    )
    GO
    USE PartitionDataBase;
    GO
    /* 创建分区函数 */
    CREATE PARTITION FUNCTION StaffNameRangePFN(varchar(100))
    AS
    RANGE 
    LEFT FOR VALUES ('H','M')
    GO
    /* 创建分区Scheme */
    CREATE PARTITION SCHEME StaffNamePScheme 
    AS
    PARTITION StaffNameRangePFN
    TO ([PRIMARY], FileGroup_I_N, FileGorup_M_Z)
    GO
    IF OBJECT_ID (N'Staff'IS NOT NULL
    DROP TABLE dbo.Staff;
    /* 创建分区表 */
    CREATE TABLE [dbo].[Staff]  
    (
    [StaffName] [varchar](100NOT NULL
    )
    ON StaffNamePScheme ([StaffName])
    GO
    CREATE CLUSTERED INDEX IX_StaffName ON [Staff]([StaffName])
    GO

    下面的代码将Staff表按StaffName分布到三个分区中。

    插入一些测试数据

    INSERT INTO [dbo].[Staff]
    SELECT FirstName FROM AdventureWorks.Person.Contact

    运行下面的代码,看看数据的分布情况

    SELECT 
        $partition.StaffNameRangePFN(StaffName) 
    AS [Partition Number],
        
    MIN(StaffName) AS [Min StaffName],
        
    MAX(StaffName) AS [Max StaffName],
        
    COUNT(StaffName) AS [Rows In Partition]
    FROM dbo.staff AS o
    GROUP BY $partition.StaffNameRangePFN(StaffName)
    ORDER BY [Partition Number]

    看起来还不错。三个分区都差不多的数据

    我们来打破这个平衡

    INSERT INTO [dbo].[Staff]
    SELECT AddressLine1 FROM AdventureWorks.Person.Address

    修改分区表的步骤:
    1 添加一个文件组到数据库
    2 修改分区Scheme
    3 修改分区函数

    Use master
    GO
    ALTER DATABASE PartitionDataBase ADD FILEGROUP FileGroup_0_9
    GO
    ALTER DATABASE PartitionDataBase
    ADD FILE 
    (
    NAME 
    = N'File_0_9',FileName = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\PartitionDataBase_09.mdf'
    )
    TO FILEGROUP FileGroup_0_9
    GO
    Use PartitionDataBase
    GO
    ALTER PARTITION SCHEME StaffNamePScheme
    NEXT USED FileGroup_0_9;
    GO
    ALTER PARTITION FUNCTION StaffNameRangePFN()
    SPLIT RANGE (
    'A');
    GO

    请注意修改和创建之间的一些差别

    再用上面的代码看看数据分布的情况。

  • 相关阅读:
    win10安装.net3.5
    VS2015密钥
    wordpress目录文件结构说明
    js | javascript获取和设置元素的属性
    wordpress | WP Mail SMTP使用QQ邮箱发布失败的解决办法
    jquery 实时监听输入框值变化方法
    XPath编写规则学习
    如何将portfolio产品图片上的悬停去掉?
    wordpress怎么禁止文章复制
    js | javascript实现浏览器窗口大小被改变时触发事件的方法
  • 原文地址:https://www.cnblogs.com/goodspeed/p/270759.html
Copyright © 2011-2022 走看看