我的项目使用Hibernate,我想增加启动时间(目前是1.5分钟),所以我检查了启动时发生了什么。在SessionFactory初始化期间,发出的查询之一是:
select * from all_sequences;这几乎需要一分钟的时间!来自Oracle SQL Developer的相同查询所需的时间也差不多。返回的记录总数为102条。
还有其他查询运行正常(一位数毫秒响应时间)
为什么它这么慢?
发布于 2020-04-04 07:30:56
收集数据字典和固定对象的优化器统计信息:
begin
dbms_stats.gather_dictionary_stats;
dbms_stats.gather_fixed_objects_stats;
end;
/Oracle需要良好的对象统计信息,以便建立良好的执行计划。有许多机制可以收集自定义对象的统计信息,但有时我们也需要收集系统对象的统计信息。(尽管我很惊讶这是开箱即用的。通常,这些问题只有在极端的变化之后才会发生,比如创建一百万个新序列。)
如果收集优化器统计信息没有帮助,请尝试使用以下步骤生成执行计划,并在问题中发布结果。
--Run the query:
select /*+ gather_plan_statistics */ * from all_sequences;
--Find the SQL_ID:
select * from gv$sql where sql_text like '%gather_plan_statistics%';
--Generate the execution plan, with estimated and actual results.
select *
from table(dbms_xplan.display_cursor(sql_id => '9wgbmhhrf0bwr', format=>'ALLSTATS LAST'));https://stackoverflow.com/questions/61016702
复制相似问题