mysql v$sql_显示sql的真实执行情况

V$SQL_MONITOR

one and only one entry for each SQL, it is added:

when a SQL statement runs parallel

when a SQL has consumed at least 5 seconds of CPU or I/O time, specified in hidden parameter _sqlmon_threshold, default 5

When a hint 'monitor' is added in a SQL, eg select /*+ monitor */ sysdate from dual;

statistics in V$SQL_MONITOR are generally refreshed in near real time, once every second.

It is kept in V$SQL_MONITOR for at least one minute. pecified in hidden parameter _sqlmon_recycle_time, default 60

Select Sql_Id,Sql_Exec_Start,

Round(Cpu_Time/1000000,1) As Cpu_Time,

Round(User_Io_Wait_Time/1000000,1) As Io_Wtime,

FETCHES,BUFFER_GETS,DISK_READS, DIRECT_WRITES

from V$SQL_MONITOR;

col name for a25

col value for a8

col describ for a80

set linesize 120

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ

FROM SYS.x$ksppi x, SYS.x$ksppcv y

WHERE x.inst_id = USERENV ('Instance')

AND y.inst_id = USERENV ('Instance')

AND x.indx = y.indx

AND x.ksppinm LIKE '%sqlmon%'

order by x.ksppinm;

NAME VALUE DESCRIB

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

_sqlmon_binds_xml_format default format of column binds_xml in [G]V$SQL_MONITOR

_sqlmon_max_plan 80 Maximum number of plans entry that can be monitored. Defaults to 20 per CPU

_sqlmon_max_planlines 300 Number of plan lines beyond which a plan cannot be monitored

_sqlmon_recycle_time 60 Minimum time (in s) to wait before a plan entry can be recycled

_sqlmon_threshold 5 CPU/IO time threshold before a statement is monitored. 0 is disabled

到底是怎么存数据的??

alter system set "_sqlmon_max_plan"=5 scope=both;

alter system set "_sqlmon_recycle_time"=3600 scope=both;

SQL> SELECT /*+ PARALLEL(a,4) */ COUNT(*) FROM test.test as a;

SQL> select /*+ monitor */ sysdate from dual;

SYSDATE

--------

15:44:32

KEY SQL_ID SQL_EXEC CPU_TIME IO_WTIME FETCHES BUFFER_GETS DISK_READS DIRECT_WRITES

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

2.5770E+10 9f7ttbh69hxxu 15:39:14 0 0 1 0 0 0

3.4360E+10 9f7ttbh69hxxu 15:39:15 0 0 1 0 0 0

4294967299 9f7ttbh69hxxu 15:39:16 0 0 1 0 0 0

1.7180E+10 9f7ttbh69hxxu 15:39:17 0 0 1 0 0 0

8589934597 9f7ttbh69hxxu 15:39:19 0 0 1 0 0 0

实验结论:

1 同一个SQL,执行多次会有多条记录

2. 同一SQL的同一次执行只有一条记录,但只要没结束,每秒刷新一次统计信息

3 参数_sqlmon_max_plan规定可以存多少条记录(我测试的结果,要重新启动数据库才真正生效)

4 参数_sqlmon_recycle_time指定每条记录至少存活多少时间,如果3的限制已经满了,但无淘汰的记录,就不会加入新的记录,丢失了

5 有3,4得知,缺省值都太小,实际运用要适当调大

6 并行查询,每个process都有一个记录

显示最后一个sql的真实执行情况

SET LONG 1000000

SET LONGCHUNKSIZE 1000000

SET LINESIZE 1000

SET PAGESIZE 0

SET TRIM ON

SET TRIMSPOOL ON

SET ECHO OFF

SET FEEDBACK OFF

spool sqlmon_active.html

select dbms_sqltune.report_sql_monitor(type=>'active') from dual;

spool off

查看某sql的执行情况

SET LINESIZE 200

COLUMN sql_text FORMAT A80

SELECT sql_id, status, sql_text

FROM v$sql_monitor

WHERE username =user;

SET LONG 1000000

SET LONGCHUNKSIZE 1000000

SET LINESIZE 1000

SET PAGESIZE 0

SET TRIM ON

SET TRIMSPOOL ON

SET ECHO OFF

SET FEEDBACK OFF

SPOOL c:\report_sql_monitor.htm

SELECT DBMS_SQLTUNE.report_sql_monitor(

sql_id =>'16m4z8yh20w4u',

type =>'HTML',

report_level =>'ALL') AS report

FROM dual;

SPOOL OFF

常用参数说明:

type:

Report format, 'TEXT' by default. Can be 'TEXT', 'HTML' or 'XML'.

report_level

Level of detail for the report, either 'BASIC', 'TYPICAL' or 'ALL'. Individual report sections can also be enabled/disabled by using a +/-. Several sections are defined: 'PLAN', 'PARALLEL', 'SESSIONS', 'INSTANCE', and 'SQL_TEXT'. For example, use 'BASIC +PARALLEL' to show the basic report with

an additional section reporting parallel information. Or use 'ALL -PLAN -INSTANCE' for a complete report excluding plan detail and instance information.

sql_id

SQL_ID for which monitoring information should be displayed. Use NULL (the default) to report on the last statement monitored by Oracle.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值