db time 时间单位

来源:互联网 发布:电子杂志制作软件 编辑:程序博客网 时间:2024/05/04 10:32

  先来说一下时间单位和简写:

1, centi-代表"百分之一", 所以cs表示百分之一秒
2, milli-代表"千分之一", 所以ms表示千分之一秒
3, micro-代表"百万分之一", 所以us表示百万分之一秒

    我一直搞不清楚V$SYSSTAT中的CPU used by this session和V$SQL中的CPU_TIME一列的时间单位是什么,
今天就写一下来帮助自已记得更清楚一些, 查阅Oracle 9i的数据库参考手册后, 终于搞明白了:

1, V$SYSSTAT或V$SESSTAT中的CPU used by this session的单位是百分之一秒(cs)
2, V$SQL中的CPU_TIME一列中用的是百万分之一秒(us)

    从我的工具的运行状况来看, V$SQL的CPU_TIME采用百万分之一秒(us)的单位实在是太小了,
导至这个列的值经常溢出, 也就是后一个时间点的值减前一个时间点的值后居然是负值(在这儿我用的是2分钟的采样频率),
如果是15分钟或以上间隔的STATSPACK的信息, 我相信这个列的数据是不准确的, 或许应当采用大一些的计量单位.

    查了一下10g(R2)的数据库参考手册, 和上面说的一样, 没有变动.

常用的 sql 如下 :

1.
select *   from SYS.V_$SYSMETRIC 
where METRIC_NAME IN ( 'Database CPU Time Ratio', 'Database Wait Time Ratio') 
AND INTSIZE_CSEC = (select max(INTSIZE_CSEC) from SYS.V_$SYSMETRIC);
2.
select *   from sys.v_$sysmetric_history where metric_name = 'Database CPU Time Ratio'  order by 1 

3. 响应时间
select CASE METRIC_NAME
    WHEN 'SQL Service Response Time' then 'SQL Service Response Time (secs)'
    WHEN 'Response Time Per Txn' then 'Response Time Per Txn (secs)'
    ELSE METRIC_NAME
    END METRIC_NAME,
    CASE METRIC_NAME
    WHEN 'SQL Service Response Time' then ROUND((MINVAL / 100),2)
    WHEN 'Response Time Per Txn' then ROUND((MINVAL / 100),2)
    ELSE MINVAL
    END MININUM,
    CASE METRIC_NAME
    WHEN 'SQL Service Response Time' then ROUND((MAXVAL / 100),2)
    WHEN 'Response Time Per Txn' then ROUND((MAXVAL / 100),2)
    ELSE MAXVAL
    END MAXIMUM,
    CASE METRIC_NAME
    WHEN 'SQL Service Response Time' then ROUND((AVERAGE / 100),2)
    WHEN 'Response Time Per Txn' then ROUND((AVERAGE / 100),2)
    WHEN 'Response Time Per Txn' then ROUND((AVERAGE / 100),2)
    ELSE AVERAGE
    END AVERAGE
    from SYS.V_$SYSMETRIC_SUMMARY
    where METRIC_NAME in ('CPU Usage Per Sec',
    'CPU Usage Per Txn',
    'Database CPU Time Ratio',
    'Database Wait Time Ratio',
    'Executions Per Sec',
    'Executions Per Txn',
    'Response Time Per Txn',
    'SQL Service Response Time',
    'User Transaction Per Sec')
    ORDER BY 1;


4.解析比例




SELECT 'Soft Parses ' "Ratio",
       ROUND(((SELECT SUM(value)
                 FROM V$SYSSTAT
                WHERE name = 'parse count (total)') -
             (SELECT SUM(value)
                 FROM V$SYSSTAT
                WHERE name = 'parse count (hard)')) /
             (SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'execute count') * 100,
             2) || '%' "Percentage"
  FROM DUAL
UNION
SELECT 'Hard Parses ' "Ratio",
       ROUND((SELECT SUM(value)
                FROM V$SYSSTAT
               WHERE name = 'parse count (hard)') /
             (SELECT SUM(value) FROM V$SYSSTAT WHERE name = 'execute count') * 100,
             2) || '%' "Percentage"
  FROM DUAL
UNION
SELECT 'Parse Failures ' "Ratio",
       ROUND((SELECT SUM(value)
                FROM V$SYSSTAT
               WHERE name = 'parse count (failures)') /
             (SELECT SUM(value)
                FROM V$SYSSTAT
               WHERE name = 'parse count (total)') * 100,
             5) || '%' "Percentage"
  FROM DUAL;

原创粉丝点击