zoukankan      html  css  js  c++  java
  • SQL Server 分区方法

    1.    创建文件组  建立分区表先要创建文件组,而创建多个文件组主要是为了获得好的 I/O 平衡。一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。每个文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件 组。一个文件组可以由多个分区使用。为了更好地管理数据(例如,为了获得更精确的备份控制),对分区表应进行设计,以便只有相关数据或逻辑分组的数据位于 同一个文件组中。使用 ALTER DATABASE,添加逻辑文件组名: ALTER DATABASE [DeanDB] ADD FILEGROUP [FG1]
    1. DeanDB为数据库名称,FG1文件组名。创建文件组后,再使用 ALTER DATABASE 将文件添加到该文件组中:
      ALTER DATABASE [DeanDB] ADD FILE ( NAME = N'FG1', FILENAME = N'C:\DeanData\FG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]
      类似的建立四个文件和文件组,并把每一个存储数据的文件放在不同的磁盘驱动器里。
      2.2     创建分区函数
      创建分区表必须先确定分区的功能机制,表进行分区的标准是通过分区函数来决定的。创建数据分区函数有RANGE “LEFT | / RIGHT”两种选择。代表每个边界值在局部的哪一边。例如存在四个分区,则定义三个边界点值,并指定每个值是第一个分区的上边界 (LEFT) 还是第二个分区的下边界 (RIGHT)[1]。代码如下:
      CREATE PARTITION FUNCTION [SendSMSPF](datetime) AS RANGE RIGHT FOR VALUES ('20070401', '20070701', '20071001')
      2.3     创建分区方案
      创建分区函数后,必须将其与分区方案相关联,以便将分区指向至特定的文件组。就是定义实际存放数据的媒体与各数据块的对应关系。多个数据表可以共用相同的 数据分区函数,一般不共用相同的数据分区方案。可以通过不同的分区方案,使用相同的分区函数,使不同的数据表有相同的分区条件,但存放在不同的媒介上。创 建分区方案的代码如下:
      CREATE PARTITION SCHEME [SendSMSPS] AS PARTITION [SendSMSPF] TO ([FG1], [FG2], [FG3], [FG4])
      2.4     创建分区表
      建立好分区函数和分区方案后,就可以创建分区表了。分区表是通过定义分区键值和分区方案相联系的。插入记录时,SQL SERVER会根据分区键值的不同,通过分区函数的定义将数据放到相应的分区。从而把分区函数、分区方案和分区表三者有机的结合起来。创建分区表的代码如下:
      CREATE TABLE SendSMSLog
      ([ID] [int] IDENTITY(1,1) NOT NULL,
      [IDNum] [nvarchar](50) NULL,
      [SendContent] [text] NULL
      [SendDate] [datetime] NOT NULL,
      ) ON SendSMSPS(SendDate)
      2.5     查看分区表信息
      系统运行一段时间或者把以前的数据导入分区表后,我们需要查看数据的具体存储情况,即每个分区存取的记录数,那些记录存取在那个分区等。我们可以通过$partition.SendSMSPF来查看,代码如下:
      SELECT $partition.SendSMSPF(o.SendDate)
                           AS [Partition Number]
             , min(o.SendDate) AS [Min SendDate]
             , max(o.SendDate) AS [Max SendDate]
             , count(*) AS [Rows In Partition]
      FROM dbo.SendSMSLog AS o
      GROUP BY $partition.SendSMSPF(o.SendDate)
      ORDER BY [Partition Number]

         把原来建立好的表,移动到这个表分区里

          Drop index MyTable_IXC on MyTable with (Move To [Data Partition Scheme] (ID) )

        最后看一看

          select * from sys.partitions where object_name(object_id)='MyTable'

  • 相关阅读:
    Js获取当前日期时间及其它操作
    Java JDBC 基础知识
    java自动创建多级目录
    [Java]读取文件方法大全
    table固定首行(二)
    table固定首行(一)
    DIV滚动条
    查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程
    DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)
    synchronized与lock,哪个效率更高
  • 原文地址:https://www.cnblogs.com/qq75077027/p/2793856.html
Copyright © 2011-2022 走看看