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  
    
    
    
    
    
    
    
     

     
  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146529.html
Copyright © 2011-2022 走看看