数据库历史分区表分析性能调查

问题:

测试与生产环境保持一致,同样的查询历史分区表sql执行性能不一致,测试库较快0.3秒,生产库要2分钟。经排查是生产环境当天的分区没有做表分析。

调查:

背景:历史表内每个分区表有1800万数据,统计sql执行时间

1、测试库将表分区的统计信息去除:

exec dbms_stats.delete_column_stats(user,'EYGLE','OWNER');

查询表统计信息是否去除:

sql执行时间:10.73s

2、执行表分析中:

analyze table PROC_PROGRESS_LOG compute statistics;

sql执行时间:9s

3、执行表分析后:

sql执行时间:0.139s

解决方案:

添加定时晚间批处理对新建分区异步进行表分析。

你可能感兴趣的:(数据库)