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

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

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

  • 相关阅读:
    烂泥:mysql修改本地主机连接
    烂泥:ESXI开启SNMP服务
    烂泥:【解决】VMware Workstation中安装ESXI5.0双网卡问题
    JS-日历签到
    CSS-文本(中,英)
    js-无缝向上滚动
    js-键盘回车搜索enter
    小程序-初次进入小程序的授权问题(授权更新后的完整步骤)button主动授权
    字蛛(font-spider)-单独压缩字体(解决页面少有的特殊字体的字体包引用)
    js-利用插件qrcode.min.js,前端实时生成二维码
  • 原文地址:https://www.cnblogs.com/goodspeed/p/270759.html
Copyright © 2011-2022 走看看