日记账导入优化
参考文档:R12: Improving Performance of General Ledger and Journal Import (Doc ID 858725.1)
优化程序
主要优化对象为GCC表和gl_balance表,理论上对于以下程序性能有提升
日记账导入:GLLEZL
批量分配:GLAMAS
过账程序:GLPPOS
检查优化项
数据库初始化文件Init.ora
- 文档:Document 174605.1
- bde_chk_cbo.sql
- Document 396009.1
并发请求控制设置
-
GL:一次处理的记录数
日记账导入和批量分配程序可以在内存中保留的日记行越多,它们将运行得越快
- 默认是1000行日记账行
- 设置的越大内存占用越高
-
GL:存档日记账导入数据
设置成Yes的话,在日记账导入程序完成之后会把gl_interface的数据归档到GL_INTERFACE_HISTORY,这样会使导入程序变慢
-
GL:内存中的账户数
官方优化程序
建议定期运行
-
程序 - 维护汇总模板
- 更新汇总账户信息
-
程序 - 优化程序
-
删除或者创建coa中维护的段值相关的索引项
在coa段值定义界面中如果勾选了索引选项,运行该优化程序则会为每个段值创建索引
如果将coa段索引标记取消,运行该程序则会将该段值对应的索引删除
如何判断?
如果段里面有很多不同的段值,则标记为索引,如果只有极少不同段值,建议取消索引标记 -
统计收集数据
- gl_code_combination
- gl_balance
- 建议每个期间运行一次或者新增coa段值、更新汇总模版,新建coa结构时运行
-
其他建议
-
减少导入时的批次数
每次运行日记账导入请求,则会遍历GL_interface表,增加运行时间
- 相同数据量 少批多行性能优于多批次少行
- gl_interface表清理
-
关闭尽可能多的期间
-
禁用账户组合的动态插入
-
保持统计数据信息是最新的
索引优化
-
gl_code_combination
-
增加复合索引
-
筛选性最好的段值放在先导列
DECLARE
v_SegNum VARCHAR2(9);
v_FreqCount NUMBER;
BEGIN
FOR i IN 1..30
LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(DISTINCT SEGMENT'||TO_CHAR(i)||')
FROM gl_code_combinations'
INTO v_FreqCount ;
IF v_freqCount <> 0 THEN
DBMS_OUTPUT.PUT_LINE(
'SEGMENT'||TO_CHAR(i)||' Frequency = '||TO_CHAR(v_FreqCount));
END IF;
END LOOP;
END; -
段值如果存在少量不同值 建议取消段值定义上的索引选项
-
复合索引名字只能是GL_CODE_COMBINATIONS_CAT,因为官方程序中hint使用了这个名字
-
尽量避免出现不同索引 前导列是相同的列名
-
-
统计数据收集
-
-
GL_INTERFACE
-
增加复合索引
- 同gcc表新增的索引列一样
- 名字必须采用GL_INTERFACE_CAT
-
检查客户化项
- gl相关表的客户化index
- gl相关表的客户化triggers