zoukankan      html  css  js  c++  java
  • 数据库表分区

    create database mytest
    on
    
    
    /*
    SQL SERVER 数据库表分区由三个步骤来完成:
    1.创建分区函数
    2.创建分区架构
    3.对表进行分区
    */
    
    --1.0创建表分区函数
    create partition function myPartFunc(int)
    as range right 
    for values(
    100000
    ,200000
    ,300000
    ,400000	
    ,500000	
    ,600000	
    ,700000		
    )
    
    /*
    这些分割界线指定了四个分区。第一个分区包含所有值小于100000的记录。
    第二个分区包含所有值在100000和200000之间的记录。
    而第三个分区包含所有值在200000和300000之间的记录。
    注意这个例子中使用了“RANGE RIGHT”从句。这说明分界值是在分区的右边。
    同样,如果使用的是“RANGE LEFT”从句,
    那么第一个分区就会包含所有值小于或等于250000的记录;
    第二个分区就会包含所有值在250001和500000之间的记录,如此类推。 
    */
    
    --2.创建分区架构  上一步是完成一个概念上的分区,接下来要完成一个物理的构建,
    --使得属于不同分区的数据存储到不同的物理文件上去.  
    /*创建文件组*/
    ALTER DATABASE mytest ADD FILEGROUP [party100000]  
    ALTER DATABASE mytest ADD FILEGROUP [party200000]  
    ALTER DATABASE mytest ADD FILEGROUP [party300000]  
    ALTER DATABASE mytest ADD FILEGROUP [party400000]
    ALTER DATABASE mytest ADD FILEGROUP [party500000]  
    ALTER DATABASE mytest ADD FILEGROUP [party600000]  
    ALTER DATABASE mytest ADD FILEGROUP [party700000] 
    /*创建物理文件,在这里,为了方便起见,
    我把每个物理文件放到了一个单独的文件组里面.  注意这里需要自己建立文件夹的 
    */   
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party100000',FILENAME = N'D:\sqlserverTest\partitiontable\p100000\party100000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party100000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party200000',FILENAME = N'D:\sqlserverTest\partitiontable\p200000\party200000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party200000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party300000',FILENAME = N'D:\sqlserverTest\partitiontable\p300000\party300000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party300000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party400000',FILENAME = N'D:\sqlserverTest\partitiontable\p400000\party400000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party400000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party500000',FILENAME = N'D:\sqlserverTest\partitiontable\p500000\party500000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party500000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party600000',FILENAME = N'D:\sqlserverTest\partitiontable\p600000\party600000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party600000] 
    
    ALTER DATABASE mytest  
    ADD FILE   
    (NAME = N'party700000',FILENAME = N'D:\sqlserverTest\partitiontable\p700000\party700000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)  
    TO FILEGROUP [party700000] 
    /*创建完分区函数,接下来就要建立分区架构,用来将概念上的分区和文件组(物理文件)关联起来.  
    */
    
    CREATE PARTITION SCHEME [myPartFuncRangePScheme]  
    AS  
    PARTITION myPartFunc TO  
    ( 
    [party100000],
    [party200000],
    [party300000],
    [party400000],
    [party500000],
    [party600000],
    [party700000],
    [PRIMARY] 
    )  
    GO    
    
    
    
    --3.0 分区表的基础架构到此就完成了,接下来就要建立分区表了.  
    
    CREATE TABLE [dbo].myPartyTable(  
      id int identity(1,1),
      PartyId int,
      Name varchar(10)
    ) ON myPartFuncRangePScheme(PartyId)  
    
    /*添加 聚焦索引 提高查询效率*/
    ALTER TABLE myPartyTable  
    ADD CONSTRAINT [myPartyTable_PK]  
    PRIMARY KEY CLUSTERED ([id], [PartyId])  
    GO   
    
    
    /*插入测试数据*/
    insert into myPartyTable values(10,'Na1')
    insert into myPartyTable values(100000,'Na1')
    insert into myPartyTable values(200000,'Na1')
    insert into myPartyTable values(300000,'Na1')
    insert into myPartyTable values(400000,'Na1')
    insert into myPartyTable values(400001,'Na1')
    select * from myPartyTable
    /*查询所在分区表*/
    select $partition.myPartFunc(PartyId),PartyId,*  
    from myPartyTable a  
    order by a.PartyId asc    
    /*查询每个分区的行数*/
    SELECT $PARTITION.myPartFunc(PartyId) AS Partition
    ,COUNT(0) AS [COUNT]
     FROM myPartyTable 
     GROUP BY $PARTITION.myPartFunc(PartyId) 
     ORDER BY Partition  
    
    
    
    
    
    
    
     

     
  • 相关阅读:
    导入excel表格的数据--->到mysql中
    git 恢复丢失的文件-- 不提交入口文件
    putty 中使用git
    mysql 登录中用户管理
    putty 窗口管理
    navicat导出表结构-->导入powerdesigner
    mysql导出数据表结构,必须退出mysql命令.重新使用msyqldump命令
    服务器上死活不执行新增的代码-----你需要清除程序缓存了
    把json数据 [ { } ] 转为数组
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146529.html
Copyright © 2011-2022 走看看