GB級資料庫分割槽實現高效能

2022-03-26 23:34:29 字數 2535 閱讀 8442

對於大容量資料庫表,且有一定業務規則的(比如有時間規則)可作如下分割槽,以提公升綜合性能

第一,建立分割槽函式:根據業務規則建立(比如乙個月分乙個或幾個月分乙個)

第二,建立檔案組:根據規則,將每一條規則對應乙個檔案(物理檔案,ndf)

第三,建立建立分割槽架構,用來將概念上的分割槽和檔案組(物理檔案)關聯起來

第四,建立分割槽表

以上做完,當執行insert時,分割槽表會根據分割槽架構將記錄插入不同的ndf檔案中;當執行select時,分割槽表也會根據分割槽架構從不同的ndf中查尋。

具體實現如下:

create partition function fiveyeardaterangepfn(datetime)

asrange left for values (

'20100930 23:59:59.997',   -- 2023年9 月

'20101031 23:59:59.997',   -- 2023年10 月

'20101130 23:59:59.997',   -- 2023年11 月

'20101231 23:59:59.997'    -- 2023年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]

goalter database test01

add file

(name = n'test201009',filename = n'd:\datafilegroup\test201009.ndf',size = 5mb,maxsize = 100mb,filegrowth = 5mb)

to filegroup [test201009]

goalter database test01

add file

(name = n'test201010',filename = n'd:\datafilegroup\test201010.ndf',size = 5mb,maxsize = 100mb,filegrowth = 5mb)

to filegroup [test201010]

goalter database test01

add file

(name = n'test201011',filename = n'd:\datafilegroup\test201011.ndf',size = 5mb,maxsize = 100mb,filegrowth = 5mb)

to filegroup [test201011]

goalter database test01

add file

(name = n'test201012',filename = n'd:\datafilegroup\test201012.ndf',size = 5mb,maxsize = 100mb,filegrowth = 5mb)

to filegroup [test201012]

gocreate partition scheme [fiveyeardaterangepscheme]

aspartition 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])

goinsert 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

Redis高效能資料庫

redis高效能資料庫 redis 本質上是乙個非關係型資料庫,採用鍵值的方式記錄資料,由於其獨特的執行模式和資料儲存模式,在作用上通常可以用來當做關係型資料庫的快取來使用,從而提高資料查詢效率 redis最大特點 執行速度很快 原因 1 redis使用c語言開發,和作業系統的相容性更強,執行效率更...

Druid 高效能資料庫元件

druid是什麼?druid是乙個jdbc元件,它包括四個部分 druiddriver,是乙個proxyjdbcdriver,它提供了filter chain模式的擴充套件機制,使得在jdbc擴充套件程式設計特別方便。druid提供了一些內建的擴充套件機制,包括stat log trace ha等擴...

Druid 高效能資料庫元件

druid是乙個jdbc元件,它包括四個部分 druiddriver,是乙個proxyjdbcdriver,它提供了filter chain模式的擴充套件機制,使得在jdbc擴充套件程式設計特別方便。druid提供了一些內建的擴充套件機制,包括stat log trace ha等擴充套件。druid...