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

  • 相关阅读:
    AGC044D Guess the Password
    CF1290E Cartesian Tree
    loj2537. 「PKUWC2018」Minimax
    loj3166. 「CEOI2019」魔法树
    CF702F T-Shirts
    CF1260F Colored Tree
    CF1340F Nastya and CBS
    CF1017G The Tree
    CF150E Freezing with Style
    前端开发 -- HTML
  • 原文地址:https://www.cnblogs.com/bobsoft/p/2714515.html
Copyright © 2011-2022 走看看