辅助账余额表分区方案

辅助账余额表分区方案采用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 );


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