达梦数据库--统计信息收集.md
生产环境--问题
现象:
项目反馈有一张报表,当查询条件选了两个组织条件后,报表查询极其慢,系统转圈几分钟才能查询出数据,当查询条件再添加一个组织的时候,查询结果2s就能出来,
思路:
1.第一反应就是,排查sql是不是很慢,确实对比了两次查询的sql,发现耗时差距很大,但是很不理解的是,两个组织(查询数据相对少)很慢,查询三个组织时(数据相对多),查询却比较快;
2.也进行了尝试sql优化,排查了是否索引失效的可能性,但是都没有很好的效果;
3.找了一个对数据库厉害的同事分析,执行计划explain后分析, 发现其中一张表统计信息收集不正常,由于环境数据主从部署模式,对主库进行手动统计信息收集后,再次在主库执行之前的sql查询,发现执行效率提升很多基本是秒级出结果;
--查看该表的统计信息
call dbms_stats.table_stats_show('SYSDBA','FA_CARD')
--手动对该表进行统计信息收集
begin
DBMS_STATS.GATHER_TABLE_STATS(owner,'FA_CARD',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
end;
如果报错提示owner的错,那么可以改为null,表示当前用户。
分类:
数据库那点事
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)