輔助賬餘額表分區方案

輔助賬餘額表分區方案採用List-Hash分區,先按期間fperiodid進行list分區,再按forgunitid進行hash子分區。分區前請先停止eas應用服務器。

分區腳本

--備份源表
alter table t_gl_assistbalance rename to t_gl_assistbalance_bak;
--新建分區表
create table t_gl_assistbalance
--nologging
partition by list (fperiodid)
SUBPARTITION by hash(forgunitid)
subpartitions  64
(
partition part_201101 values('qB1pIgEOEADgAXQ4wKimg4I4jEw='),
partition part_201102 values('qB1pIgEOEADgAXQ5wKimg4I4jEw='),
partition part_201103 values('qB1pIgEOEADgAXQ6wKimg4I4jEw='),
partition part_201104 values('qB1pIgEOEADgAXQ7wKimg4I4jEw='),
partition part_201105 values('qB1pIgEOEADgAXQ8wKimg4I4jEw='),
partition part_201106 values('qB1pIgEOEADgAXQ9wKimg4I4jEw='),
partition part_201107 values('qB1pIgEOEADgAXQ+wKimg4I4jEw='),
partition part_201108 values('qB1pIgEOEADgAXQ/wKimg4I4jEw='),
partition part_201109 values('qB1pIgEOEADgAXRAwKimg4I4jEw='),
partition part_201110 values('qB1pIgEOEADgAXRBwKimg4I4jEw='),
partition part_201111 values('qB1pIgEOEADgAXRCwKimg4I4jEw='),
partition part_201112 values('qB1pIgEOEADgAXRDwKimg4I4jEw='),
partition part_201201 values('qB1pIgEOEADgAXRSwKimg4I4jEw='),
partition part_201202 values('qB1pIgEOEADgAXRTwKimg4I4jEw='),
partition part_201203 values('qB1pIgEOEADgAXRUwKimg4I4jEw='),
partition part_201204 values('qB1pIgEOEADgAXRVwKimg4I4jEw='),
partition part_201205 values('qB1pIgEOEADgAXRWwKimg4I4jEw='),
partition part_201206 values('qB1pIgEOEADgAXRXwKimg4I4jEw='),
partition part_201207 values('qB1pIgEOEADgAXRYwKimg4I4jEw='),
partition part_201208 values('qB1pIgEOEADgAXRZwKimg4I4jEw='),
partition part_201209 values('qB1pIgEOEADgAXRawKimg4I4jEw='),
partition part_201210 values('qB1pIgEOEADgAXRbwKimg4I4jEw='),
partition part_201211 values('qB1pIgEOEADgAXRcwKimg4I4jEw='),
partition part_201212 values('qB1pIgEOEADgAXRdwKimg4I4jEw='),
partition part_201301 values('qB1pIgEOEADgAXRswKimg4I4jEw='),
partition part_201302 values('qB1pIgEOEADgAXRtwKimg4I4jEw='),
partition part_201303 values('qB1pIgEOEADgAXRuwKimg4I4jEw='),
partition part_201304 values('qB1pIgEOEADgAXRvwKimg4I4jEw='),
partition part_201305 values('qB1pIgEOEADgAXRwwKimg4I4jEw='),
partition part_201306 values('qB1pIgEOEADgAXRxwKimg4I4jEw='),
partition part_201307 values('qB1pIgEOEADgAXRywKimg4I4jEw='),
partition part_201308 values('qB1pIgEOEADgAXRzwKimg4I4jEw='),
partition part_201309 values('qB1pIgEOEADgAXR0wKimg4I4jEw='),
partition part_201310 values('qB1pIgEOEADgAXR1wKimg4I4jEw='),
partition part_201311 values('qB1pIgEOEADgAXR2wKimg4I4jEw='),
partition part_201312 values('qB1pIgEOEADgAXR3wKimg4I4jEw='),
PARTITION part_other VALUES (DEFAULT)
)
as select * from t_gl_assistbalance_bak
;
--注意:以上分區從201101期開始分區,對於2011年以前數據的查詢性能可能會相對會較差

--索引
create index IX_GL_PAR_ASSBALACC on t_gl_assistbalance (forgunitid ,fperiodid , faccountid,fbaltype,fcurrencyid,fassistgrpid) local;
create index IX_GL_PAR_ASSBALASST on t_gl_assistbalance (fassistgrpid, forgunitid,fperiodid, fbaltype, fcurrencyid) local;

--主鍵
alter table t_gl_assistbalance add constraint PK_P_ASSTBAL primary key (forgunitid,fperiodid,faccountid,fbaltype,fcurrencyid,fassistgrpid);


優點1、在不改變現有系統代碼的前提下,提升按期間、組織進行的大範圍數據查詢性能,比如總賬月結功能2、大幅降低索引佔用的大量存儲空間缺點在系統新增會計期間後,需要手工維護拆分新分區。

拆分分區腳本如下:

ALTER TABLE t_gl_assistbalance SPLIT PARTITION PART_OTHER VALUES ('qB1pIgEOEADgAXQpwKimg4I4jEw=') INTO (PARTITION PART_201012,PARTITION PART_OTHER );


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章