首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle数据库中的优化器如何使用I/O统计数据?

Oracle数据库中的优化器如何使用I/O统计数据?
EN

Database Administration用户
提问于 2018-05-10 17:03:37
回答 2查看 308关注 0票数 2

我想帮助Oracle的查询优化器做出更明智的决定。我一直无法找到许多关于优化器如何确定I/O操作成本的信息,除了使用检索单个数据块所需的时间的无源注释之外。以下是我想知道的一些事情:

  1. 可以查看优化器使用的当前I/O基准吗?
  2. 是否有可能触发这些基准的更新?
  3. 优化器是否计算了当前操作的I/O成本?例如,如果存储设备上的并发负载很重,导致性能下降,它是否认为I/O的相对成本会暂时更高?
  4. 优化器是否考虑延迟/随机访问性能与吞吐量/顺序性能?
  5. 如果您在具有不同性能特征的多个存储设备上有数据文件,那么优化器是否有和应用设备特定的成本?
EN

回答 2

Database Administration用户

发布于 2018-05-10 19:00:39

  1. 您可以在SYS.AUX_STATS$中看到当前使用的统计信息。
  2. DBMS_STATS.GATHER_SYSTEM_STATS收集系统统计数据。使用gathering_mode='NOWORKLOAD'运行它将捕获与IO相关的服务器状态。您通常还在工作负载下运行它(“开始/停止”、“间隔”)。
  3. (4,5)在典型负载期间收集系统统计数据应该考虑到您提到的潜在问题。此外,(4)将受到优化器模式(ALL_ROWSFIRST_ROWS)的影响。

此外,使用dbms_stats包中的过程,可以多次收集统计数据、导出(EXPORT_SYSTEM_STATS )、导入(EXPORT_SYSTEM_STATS)或删除它(DELETE_SYSTEM_STATS)。

票数 2
EN

Database Administration用户

发布于 2018-05-10 19:04:57

我没有真正的答案。我主要有指点,你可以去哪里寻找更多的信息。

查看I/O统计数据(1)

您可能会喜欢这个URL:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/poster/OUTPUT_海报/poster.html#

看来Oracle将“往返”信息保存在V$FILESTAT中。

更新I/O统计量(2)

甲骨文猎户座是我首先想到的东西。快速搜索后,似乎有一个DBMS包来更新I/O统计信息。

https://oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems

问题3和4

我只有自己的想法和推理。

SAS与SATA (5)

“不同特性”的概念与Oracle数据库并不陌生(至少在文档中是如此)。12C的ILM子句允许您自动将数据从ASM磁盘组[+SAS]上的表空间移动到[+SATA]磁盘组的表空间。

但是,我不会在相同的表空间中混合具有不同特征的文件。

磁盘盘的

内部/外部部分

ASM似乎有能力区分这些。我会翻阅这些文件。

https://docs.oracle.com/database/121/OSTMG/GUID-857680CA-35B0-4C88-9DF4-55537C8F1B7C.htm#OSTMG13790

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/206394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档