• SQL Server表分区


    你是否在千方百计优化SQL Server 数据库的性能?如果你的数据库中含有大量的表格,把这些表格分区放入独立的文件组可能会让你受益匪浅。SQL Server 2005引入的表分区技术,让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理性能以优化查询性能。

      SQL Server数据库表分区操作过程由三个步骤组成:
      1. 创建分区函数
      2. 创建分区架构
      3. 对表进行分区
      下面将对每个步骤进行详细介绍。
    比如,在C盘下建立如下几个目录
    C:/Data2/Primary
    C:/Data2/FG1
    C:/Data2/FG2
    C:/Data2/FG3
    C:/Data2/FG4
    其中primary存放的是主数据库文件,其他FG1--FG4存放四个单独的文件组,可以见创立数据库
    Data Partition DB2,如下
    USE [master]
    GO
    /****** Object:  Database [Data Partition DB]    Script Date: 10/08/2006 23:09:53 ******/
    IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'Data Partition DB2')
    DROP DATABASE [Data Partition DB2]
    GO
    CREATE DATABASE [Data Partition DB2]
    ON PRIMARY
    (NAME='Data Partition DB Primary FG',
    FILENAME=
    'C:/Data2/Primary/Data Partition DB Primary FG.mdf',
    SIZE=5,
    MAXSIZE=500,
    FILEGROWTH=1 ),
    FILEGROUP [Data Partition DB FG1]
    (NAME = 'Data Partition DB FG1',
    FILENAME =
    'C:/Data2/FG1/Data Partition DB FG1.ndf',
    SIZE = 5MB,
    MAXSIZE=500,
    FILEGROWTH=1 ),
    FILEGROUP [Data Partition DB FG2]
    (NAME = 'Data Partition DB FG2',
    FILENAME =
    'C:/Data2/FG2/Data Partition DB FG2.ndf',
    SIZE = 5MB,
    MAXSIZE=500,
    FILEGROWTH=1 ),
    FILEGROUP [Data Partition DB FG3]
    (NAME = 'Data Partition DB FG3',
    FILENAME =
    'C:/Data2/FG3/Data Partition DB FG3.ndf',
    SIZE = 5MB,
    MAXSIZE=500,
    FILEGROWTH=1 ),
    FILEGROUP [Data Partition DB FG4]
    (NAME = 'Data Partition DB FG4',
    FILENAME =
    'C:/Data2/FG4/Data Partition DB FG4.ndf',
    SIZE = 5MB,
    MAXSIZE=500,
    FILEGROWTH=1 )
     
    步骤一:创建一个分区函数
      此分区函数用于定义你希望SQL Server如何对数据进行分区的参数值([u]how[/u])。这个操作并不涉及任何表格,只是单纯的定义了一项技术来分割数据。
      我们可以通过指定每个分区的边界条件来定义分区。例如,假定我们有一份Customers表,其中包含了关于所有客户的信息,以一一对应的客户编号(从1到1,000,000)来区分。我们将通过以下的分区函数把这个表分为四个大小相同的分区:  
    CREATE PARTITION FUNCTION [Data Partition Range](int) 
      AS RANGE LEFT FOR VALUES (100,200,300)

      这些边界值定义了四个分区。第一个分区包括所有值小于100的数据,第二个分区包括值在100-200之间的数据。第三个分区包括值在200-300之间的数据。所有值大于或等于300的数据被归入第四个分区。
      请注意,调用"RANGE RIGHT"语句表明每个分区边界值是右界。类似的,使用"RANGE LEFT"语句,则第一个分区应该包括所有值小于或等于100的数据,第二个分区的数据值在100-200之间,以此类推。
    步骤二:创建一个分区架构
      一旦给出描述如何分割数据的分区函数,接着就要创建一个分区架构,用来定义分区位置([u]where[/u])。创建过程非常直截了当,只要将分区连接到指定的文件组就行了。例如,如果有四个文件组,组名从"fg1"到"fg4",那么以下的分区架构就能达到想要的效果:  
    USE [Data Partition DB2]
    go
    CREATE PARTITION SCHEME [Data Partition Scheme]
    AS PARTITION [Data Partition Range]
    TO ([Data Partition DB FG1], [Data Partition DB FG2], [Data Partition DB FG3],[Data Partition DB FG4]);

      注意,这里将一个分区函数连接到了该分区架构,但并没有将分区架构连接到任何数据表。这就是可复用性起作用的地方了。无论有多少数据库表,我们都可以使用该分区架构(或仅仅是分区函数)。
    步骤三:对一个表进行分区
      定义好一个分区架构后,就可以着手创建一个分区表了。这是整个分区操作过程中最简单的一个步骤。只需要在表创建指令中添加一个"ON"语句,用来指定分区架构以及应用该架构的表列。因为分区架构已经识别了分区函数,所以不需要再指定分区函数了。
      例如,使用以上的分区架构创建一个客户表,可以调用以下的Transact-SQL指令: 
    CREATE TABLE MyTable
    (ID INT NOT NULL, Date DATETIME, Cost money)    
       ON [Data Partition Scheme] (ID);

    这里注意,ON [Data Partition Scheme] (ID);表明,划分时以ID的大小作为划分的根据,ON后要跟分区架购的名称
    最后,我们可以填充数据了
    USE [Data Partition DB2]
    go
    declare @count int
    set @count =-25
    while @count <=100
    begin
    insert into MyTable select @count,getdate(),100.00
    set @count=@count+1
    end
    set @count =101
    while @count <=200
    begin
    insert into MyTable select @count,getdate(),200.00
    set @count=@count+1
    end
    set @count =201
    while @count <=300
    begin
    insert into MyTable select @count,getdate(),300.00
    set @count=@count+1
    end
    set @count =301
    while @count <=400
    begin
    insert into MyTable select @count,getdate(),400.00
    set @count=@count+1
    end
    set @count =401
    while @count <=800
    begin
    insert into MyTable select @count,getdate(),500.00
    set @count=@count+1
    end
     

    最后,我们可以查询下,插入的这些数据,是否真的被划分到四个不同的文件组里的表分区了,可以这样看
    SELECT *, $PARTITION.[Data Partition Range](ID)
     FROM MyTable

  • 相关阅读:
    libevent(十)bufferevent 2
    libevent(九)bufferevent
    maven本地库更新失败
    IDEA常用快捷键
    ELASTIC SEARCH 安装
    Hbase建模选择
    ElasticSearch关键概念
    Nginx+tomcat 负载均衡
    MapReduce (MRV1)设计理念与基本架构
    Kafka安装验证及其注意
  • 原文地址:https://www.cnblogs.com/houzuofeng/p/3298765.html
Copyright © 2020-2023  润新知