zoukankan      html  css  js  c++  java
  • .GB级数据库分区实现高性能

    对于大容量数据库表,且有一定业务规则的(比如有时间规则)可作如下分区,以提升综合性能

     第一,创建分区函数:根据业务规则创建(比如一个月分一个或几个月分一个)

    第二,创建文件组:根据规则,将每一条规则对应一个文件(物理文件,NDF)

    第三,创建建立分区架构,用来将概念上的分区和文件组(物理文件)关联起来

    第四,建立分区表

    以上做完,当执行INSERT时,分区表会根据分区架构将记录插入不同的NDF文件中;当执行SELECT时,分区表也会根据分区架构从不同的NDF中查寻。

    具体实现如下:

    CREATE PARTITION FUNCTION FiveYearDateRangePFN(datetime)
    AS
    RANGE LEFT FOR VALUES (
    '20100930 23:59:59.997',   -- 2010年9 月
    '20101031 23:59:59.997',   -- 2010年10 月
    '20101130 23:59:59.997',   -- 2010年11 月
    '20101231 23:59:59.997'    -- 2010年12 月
    )
    GO
    ALTER DATABASE TEST01 ADD FILEGROUP [Test201009]
    ALTER DATABASE TEST01 ADD FILEGROUP [Test201010]
    ALTER DATABASE TEST01 ADD FILEGROUP [Test201011]
    ALTER DATABASE TEST01 ADD FILEGROUP [Test201012]
    GO
    ALTER DATABASE TEST01
    ADD FILE
    (NAME = N'Test201009',FILENAME = N'D:\DataFileGroup\Test201009.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
    TO FILEGROUP [Test201009]
    GO
    ALTER DATABASE TEST01
    ADD FILE
    (NAME = N'Test201010',FILENAME = N'D:\DataFileGroup\Test201010.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
    TO FILEGROUP [Test201010]
    GO
    ALTER DATABASE TEST01
    ADD FILE
    (NAME = N'Test201011',FILENAME = N'D:\DataFileGroup\Test201011.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
    TO FILEGROUP [Test201011]
    go
    ALTER DATABASE TEST01
    ADD FILE
    (NAME = N'Test201012',FILENAME = N'D:\DataFileGroup\Test201012.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
    TO FILEGROUP [Test201012]
    GO
    CREATE PARTITION SCHEME [FiveYearDateRangePScheme]
    AS
    PARTITION FiveYearDateRangePFN TO
    (
    [Test201009],[Test201010],[Test201011],[Test201012],[PRIMARY]
    )
    GO
    CREATE TABLE [dbo].[Test](
        [ID] [uniqueidentifier] NOT NULL,
        [Name] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
        [Date] [datetime] NOT NULL      
    ) ON FiveYearDateRangePScheme(Date)
    ALTER TABLE [Test]
    ADD CONSTRAINT [ObjTeaching_PK] PRIMARY KEY CLUSTERED ([ID], [Date])
    go
    insert into Test(id,name,date) values(newid(),'20100901','2010-09-01')
    insert into Test(id,name,date) values(newid(),'20101001','2010-10-01')
    insert into Test(id,name,date) values(newid(),'20101101','2010-11-01')
    insert into Test(id,name,date) values(newid(),'20101201','2010-12-01')
    select $partition.FiveYearDateRangePFN(date),date,*
    from Test a
    order by a.date asc
    GO

  • 相关阅读:
    IDEA(jetbrain通用)优雅级使用教程(转)
    intellij idea 修改背景保护色&&修改字体&&快捷键大全(转)
    淘宝可伸缩高性能互联网架构HSF(转)
    spring利用注解@Value获取properties属性为null
    String.valueOf()方法注意
    Spring任务调度器之Task的使用(转)
    Mybatis集成(转)
    深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)
    Spring+Mybatis+SpringMVC+Maven+MySql搭建实例(转)
    Spring4.2+SpringMVC+Mybatis3.4的集成(转-)
  • 原文地址:https://www.cnblogs.com/bobsoft/p/2714515.html
Copyright © 2011-2022 走看看