从10g升级到19c后,双表和视图的性能较慢



在将Oracle数据库从10g升级到19c之后,我遇到了在使用update/insert语句时在大型数据库上的双表和视图中查询的性能问题。在比较Oracle数据库10g中视图的性能时,我不得不等待一个多小时。

--use Views
update table1
set break_show ='Y'
where developer in (select developer_dis from view1 where rn1 <=10 or rn2 <=10);
--use Table
update table1
set break_show ='Y'
where developer in (select developer_dis from table2 where rn1 <=10 or rn2 <=10);

我不得不设置EXECUTE IMMEDIATE'alter session set optimizer_features_enable=";10.2.0.4〃;,这是由糟糕的性能修复的。

我应该怎么做才能找出双表和视图运行缓慢的真正原因。

如有任何帮助,我们将不胜感激。

我没有看到任何对对偶表的引用?

但是,对于任何重大升级,优化器都会经历许多更改。对于大多数查询,这应该会产生相同或更好的性能,但总会有回归的风险。你可以使用

select * from dbms_xplan.display_cursor('[sqlid]')

对于每个查询(从V$SQL获取SQL_ID(,查看不同的计划,然后从中决定行动方案。19c的好处之一是SQL计划管理,因此您可以强制优化器继续使用10g计划,同时随着时间的推移,仍然可以捕获可能更好的计划。

最新更新