gpt4 book ai didi

performance - Oracle 中最耗时的 5 个 SQL 查询

转载 作者:行者123 更新时间:2023-12-03 07:47:02 25 4
gpt4 key购买 nike

如何找到 Oracle 中性能不佳的 SQL 查询?

Oracle 维护共享 SQL 区域的统计信息,每个 SQL 字符串包含一行 (v$sqlarea)。但我们如何才能识别其中哪一个表现不佳呢?

最佳答案

我发现这个 SQL 语句是一个有用的起点(抱歉,我无法将其归因于原始作者;我在互联网上的某个地方找到了它):

SELECT * FROM
(SELECT
sql_fulltext,
sql_id,
elapsed_time,
child_number,
disk_reads,
executions,
first_load_time,
last_load_time
FROM v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/

这会查找当前存储在 SQL 缓存中的排名靠前的 SQL 语句(按耗时排序)。随着时间的推移,语句将从缓存中消失,因此当您中午开始工作时,尝试诊断昨晚的批处理作业可能没有什么好处。

您还可以尝试按磁盘读取和执行进行排序。执行很有用,因为一些较差的应用程序多次发送相同的 SQL 语句。此 SQL 假设您正确使用绑定(bind)变量。

然后,您可以获取语句的 sql_idchild_number 并将它们输入到这个宝贝中:-

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

这显示了 SQL 缓存中的实际计划和 SQL 的全文。

关于performance - Oracle 中最耗时的 5 个 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com