• 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

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

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

  • 相关阅读:
    .JS replace方法替换所有字符
    .net framework 4.0,结果还是失败,出现HRESULT 0xc8000222错误代码
    用PowerDesigner15自动将数据库里的表生成ER图
    C#对JSON数据格式的处理
    Type of conditional expression cannot be determined because there is no implicit conversion between 'Common.EnumType.EnumGender' and '<null>'
    如何在string.Format方法中输出大括号({})
    网架构学习笔记
    c#实现javascript中函数escape解码
    Solon 开发,八、注入依赖与初始化
    Solon 开发,七、自定义注解开发汇总
  • 原文地址:https://www.cnblogs.com/goodspeed/p/270759.html
Copyright © 2020-2023  润新知