欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

oracle系统统计信息

程序员文章站 2024-01-23 17:31:04
...

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 系统统计信息主要描述了与系统硬件相关的某些特性,例如cpu和io系统的性能和利用率等。这些信息对于查询优化器来说是非常重要的,在选择执行计划的过程中,oracle优化器会利用系统统计信息来评估执

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  系统统计信息主要描述了与系统硬件相关的某些特性,例如cpu和io系统的性能和利用率等。这些信息对于查询优化器来说是非常重要的,在选择执行计划的过程中,oracle优化器会利用系统统计信息来评估执行计划的成本,因此,准确无误的系统统计信息可以帮助优化器做出正确的选择。

  我们可以通过DBMS_STATS.GATHER_SYSTEM_STATS过程来收集系统统计信息,收集的方式有两种:负载统计(WORKLOAD STATISTICS)在具有真实系统负载的数据库系统上,收集某一时间段内的系统信息;非负载统计(NOWORKLOAD STATISTICS)oracle数据库基于某种方式(如持续读磁盘)模拟系统负载来获取系统统计信息。

  通各方资料和oracle官方文档中可以看出,我们最好采用系统负载的方式来收集系统统计信息,收集的时间间隔至少要30分钟,条件允许的情况下,最好多次收集,择优使用。处理使用DBMS_STATS.GATHER_SYSTEM_STATS来收集系统统计信息,我们也可以手工设定某些信息选项,这一点在后面会有示例。

  oracle的系统统计信息最终是存储在aux_stats$数据基表中的,首先来看一下该表的结构:

  SQL> desc aux_stats$

  名称 是否为空? 类型

  ----------------------------- -------- --------------------

  SNAME NOT NULL VARCHAR2(30)

  PNAME NOT NULL VARCHAR2(30)

  PVAL1 NUMBER

  PVAL2 VARCHAR2(255)

  aux_stats$表中存储的数据量是非常有限的,如

  SQL> select * from aux_stats$;

  SNAME PNAME PVAL1 PVAL2

  -------------------- -------------------- ---------- ------------------------------

  SYSSTATS_INFO STATUS COMPLETED

  SYSSTATS_INFO DSTART 09-17-2011 10:21

  SYSSTATS_INFO DSTOP 09-17-2011 10:21

  SYSSTATS_INFO FLAGS 1

  SYSSTATS_MAIN CPUSPEEDNW 1751.75879

  SYSSTATS_MAIN IOSEEKTIM 10

  SYSSTATS_MAIN IOTFRSPEED 4096

  SYSSTATS_MAIN SREADTIM

  SYSSTATS_MAIN MREADTIM

  SYSSTATS_MAIN CPUSPEED

  SYSSTATS_MAIN MBRC

  SNAME PNAME PVAL1 PVAL2

  -------------------- -------------------- ---------- ------------------------------

  SYSSTATS_MAIN MAXTHR

  SYSSTATS_MAIN SLAVETHR

  已选择13行。

  sname字段的取值有:SYSSTATS_INFO,SYSSTATS_MAIN,SYSSTATS_TEMP

  SYSSTATS_INFO:系统统计信息的状态

  SYSSTATS_MAIN:系统统计信息的内容

  SYSSTATS_TEMP:在收集系统统计信息期间,用于临时存放中间数据

  对于pname字段的含义,oracle官方文档给出了详细的解释:

  Parameter NameDescriptionInitializationOptions for Gathering or Setting StatisticsUnit

  cpuspeedNWRepresents noworkload CPU speed. CPU speed is the average number of CPU cycles in each second. CPU速率At system startupSet gathering_mode = NOWORKLOAD or set statistics manually.Millions/sec.

  ioseektimI/O seek time equals seek time + latency time + operating system overhead time. 寻道时间At system startup

  10 (default)Set gathering_mode = NOWORKLOAD or set statistics manually.ms

  iotfrspeedI/O transfer speed is the rate at which an Oracle database can read data in the single read request. 数据传输速率At system startup

  4096 (default)Set gathering_mode = NOWORKLOAD or set statistics manually.Bytes/ms

  cpuspeedRepresents workload CPU speed. CPU speed is the average number of CPU cycles in each second. CPU速率NoneSet gathering_mode = NOWORKLOAD, INTERVAL, orSTART|STOP, or set statistics manually.Millions/sec.

[1] [2]

oracle系统统计信息