gpt4 book ai didi

performance - 如何使用 Oracle 正确测试 SELECT 查询的性能?

转载 作者:行者123 更新时间:2023-12-02 21:52:49 26 4
gpt4 key购买 nike

我想测试两个查询来了解它们的性能,而不是仅仅查看执行计划。我看到 Tom Kyte 一直在他的网站上这样做,作为收集他的理论证据的一种方式。

我相信性能测试中存在很多陷阱,例如,当我第一次在 SQL Developer 中运行查询时,该查询可能会返回一些合理的数字。再次运行完全相同的查询,会立即返回。服务器或客户端上必须有某种缓存,我知道这很重要 - 但我只对非缓存性能感兴趣。

性能测试的指导原则是什么?如何编写重复查询的性能测试?我只写一个匿名 block 和循环吗?我如何获取时间信息、平均值、中位数、标准偏差?

最佳答案

Oracle(和其他数据库)缓存查询,您可以在其中看到您所描述的行为。 “硬”解析意味着该查询没有查询计划,这使得 Oracle 根据索引和统计信息找出查询计划。 “软”解析是当您随后运行相同查询并收到即时结果时发生的情况,因为查询计划存在并且 Oracle 重新使用它。请参阅the Ask Tom question about it for more details .

请注意EXPLAIN output :

With the cost-based optimizer, execution plans can and do change as the underlying costs change. EXPLAIN PLAN output shows how Oracle runs the SQL statement when the statement was explained. This can differ from the plan during actual execution for a SQL statement, because of differences in the execution environment and explain plan environment.

关注非缓存性能给出了最坏的情况,但考虑到会发生缓存 - 非缓存基准在日常使用中并不现实。

关于performance - 如何使用 Oracle 正确测试 SELECT 查询的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709944/

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