当前位置:首页 » 编程语言 » sql监控跟踪sql语句
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql监控跟踪sql语句

发布时间: 2022-07-25 10:54:18

‘壹’ 监控数据库性能的"sql"语句都有哪些 (1)

监控数据库性能的SQL语句:1. 监控事例的等待select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4;2. 回滚段的争用情况select name, waits, gets, waits/gets "Ratio" from v$rollstat a, v$rollname b where a.usn = b.usn;3. 监控表空间的 I/O 比例select df.tablespace_name name,df.file_name "file",f.phyrds pyr, f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw from v$filestat f, dba_data_files df where f.file# = df.file_id order by df.tablespace_name;4. 监控文件系统的 I/O 比例select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name", a.status, a.bytes, b.phyrds, b.phywrts from v$datafile a, v$filestat b where a.file# = b.file#;5.在某个用户下找所有的索引select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name from user_ind_columns, user_indexes where user_ind_columns.index_name = user_indexes.index_name and user_ind_columns.table_name = user_indexes.table_name order by user_indexes.table_type, user_indexes.table_name, user_indexes.index_name, column_position;6. 监控 SGA 的命中率select a.value + b.value "logical_reads", c.value "phys_reads", round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO" from v$sysstat a, v$sysstat b, v$sysstat c where a.statistic# = 38 and b.statistic# = 39 and c.statistic# = 40;7. 监控 SGA 中字典缓冲区的命中率select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio", (1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio" from v$rowcache where gets+getmisses ;0 group by parameter, gets, getmisses;

‘贰’ 如何实时监控mysql中的SQL语句的执行情况

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。

触发条件相关的参数有以下几个:

  • function:

    ∘默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

    ∘也可以设置为 processlist,代表监控 show processlist 的输出;

  • variable:

    ∘默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

  • threshold:

    ∘默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

    ∘监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

  • cycles:

    ∘默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

  • 连接参数:host、password、port、socket。

  • 其他一些重要参数:

  • iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

  • run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

  • sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

  • interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

  • dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

  • retention-time :监控数据保留时长,默认 30 天。

  • daemonize:以后台服务运行,默认不开启。

  • log:后台运行日志,默认为 /var/log/pt-stalk.log。

  • collect:触发发生时收集诊断数据,默认开启。

    ∘collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

    ∘collect-strace:收集跟踪数据,需要 strace 工具。

    ∘collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。

‘叁’ 如何创建监视SQL语句的事件监控器

打2008事件探查器工具栏按钮新建跟踪连要跟踪数据库实例确定即新建跟踪查看链接数据库实例语句执行创建完跟踪
每客户端都ClientProcessID想跟踪客户端语句执行情况:
先让客户端查询报表通事件探查器看看ClientProcessID暂停事件探查
文件——属性——筛选——面找ClientProcessID,等于处双击填入客户端ClientProcessID,确定重新启追看客户端运行情况!

‘肆’ 如何监控mssql执行的sql语句

用mssql自带的SQL Server Profiler就可以。

‘伍’ sql server 怎么捕捉sql语句

如果在Transact-SQL中发生了错误,一般有两种捕捉错误的方法,一种是在客户端代码(如c#、delphi等)中使用类似try...catch的语句进行捕捉;另外一种就是在Transact-SQL中利用Transact-SQL本身提供的错误捕捉机制进行捕捉。如果是因为Transact-SQL语句的执行而产生的错误,如键值冲突,使用第一种和第二种方法都可以捕捉,但是如果是逻辑错误,使用客户端代码进行捕捉就不太方便。因此,本文就如何使用Transact-SQL进行错误捕捉进行了讨论。
非致命错误(non-fatal error)的捕捉
通过执行Transact-SQL而产生的错误可分为两种:致命错误(fatal error)和非致命错误(non-fatal error)。在Transact-SQL中只可以捕捉非致命错误(如键值冲突),而无法捕捉致命错误(如语法错误)。在Transact-SQL中可以通过系统变量@@ERROR判断最近执行的一条语句是否成功执行。如果发生了错误,@@Error的值大于0,否则值为0。下面举一个例子说明@@ERROR的使用。
假设有一个表table1,在这个表中有两个字段f1,f2。其中f1是主键。
INSERTINTOtable1VALUES(1,'aa')INSERTINTOtable1VALUES(1,'bb')--这条语句将产生一个错误IF@@ERROR0PRINT'键值冲突'当执行第二条语句时发生键值冲突错误,@@ERROR被赋为错误号2627,因此输出结果显示'键值冲突'。使用@@ERROR系统变量时需要注意,@@ERROR只记录最近一次执行的Transact-SQL语句所发生的错误,如果最近一次执行的Transact-SQL没有发生错误,@@ERROR的值为0。因此,只能在被捕捉的那条Transact-SQL语句后使用@@ERROR。
在SQL Server中,不仅可以捕捉系统提供的错误,还可以自定义错误。有两种方法可以定义错误信息。
1. 使用sp_addmessage系统存储过程添加错误信息,然后使用RAISERROR抛出错误。
sp_addmessage将错误号,错误级别、错误描述等信息添加到系统表中,然后使用RAISERROR根据相应的错误号抛出错误信息。用户自定义的信息应该从50001开始。EXECsp_addmessage@msgnum=50001,
@severity=16,@msgtext='sql encounter an error(%s).',@lang='us_english'EXECsp_addmessage@msgnum=50001,
@severity=16,@msgtext='sql遇到了一个错误(%1!).'如果使用的SQL Server版本是非英语版本,在添加本地错误信息时必须首先添加英文的错误信息。错误描述可以象c语言中的printf的格式字符串一样使用参数,如%s、%d。但要注意的是在英文版的错误信息中要使用%s、%d等形式,而在本地化的错误信息中要使用%1!、%2!等形式,在每个%?(1 <= ? <= n)后需要加一个!,而且%?的数目必须和英文版的错误信息的参数一致。
在未插入本地化错误信息时,RAISERROR将使用英文版的错误信息。当插入本地化错误信息时,RAISERROR使用本地化的错误信息。
RAISERROR(50001,16,1,'测试')
输出的结果:
服务器: 消息50001
,级别16
,状态1
,行1sql遇到了一个错误(测试).
其中'测试'字符串通过%1传入本地化的错误描述字符串中。
2. 直接使用RAISERROR将错误抛出。
使用第一种方法虽然使Transact-SQL语句看上去更整洁(这种方法类似于在编程语言中使用常量定义错误信息,然后在不同的地方通过错误编号引用这些错误信息。),但是这样做却使错误信息和数据库的耦合度增加,因为如果将这些带有RAISERROR的Transact-SQL放到别的SQL Server数据库上执行,由于在其它的数据库中还未添加错误信息,因此会产生RAISERROR调用错误,除非使用sp_addmessage将所需的错误信息再加入到其它的数据库中。
基于上述原因,RAISERROR不仅可以根据错误代码抛出错误信息,也可以直接通过错误描述格式字符串抛出错误信息。

‘陆’ 请教如何监控 sql语句的执行计划 发生了变化

cle 10g的DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下, 显示真实的执行计划有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。
通过对比预估的I/O与真实的I/O开销来判断 SQL语句所存在问题,如缺少统计信息,SQL语句执行的次数,根据实际中间结果集的大小来选择合适的连接方式等。本文仅仅讲述 display_cursor函数的使用。

‘柒’ 如何监控软件查询数据库sql语句

MYSQL中没有实时监控。 一般是通过查看普通查询日志来看执行了哪些SQL语句。当然也可以自己改写MYSQL的源代码以实时输出执行了什么SQL语句。

‘捌’ 在sqlserver2008用sql监视器 怎么监视客户端应用程序的sql语句

SQL2008 可以设置 Profiler。
打开Microsoft SQL Server Management Studio , 在菜单栏有个工具(Tool), 里面有个事件追踪(SQL Server Profiler)。
打开sql server profiler, 连接数据库。弹出Trace Properties(跟踪属性), 选择事件(Events Selection)
重要列名解释:
CPU:事件所使用的 CPU 时间总计(以毫秒为单位)。
Duration : 持续时间,事件所花费的时间总计,(以毫秒为单位)。
Reads : 服务器代表事件执行的逻辑磁盘读取数,(以字节为单位) 。
Writes :服务器代表事件执行的物理磁盘写入数,(以字节为单位) 。
loginName:SQL 登陆用户;
SPID:会话编号;
starttime:开始执行时间;
endtime:执行结束时间;
TEXTDATA:执行的语句。

‘玖’ 如何实时监控mysql中的SQL语句的执行情况

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。

触发条件相关的参数有以下几个:

  • function:

    ∘默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

    ∘也可以设置为 processlist,代表监控 show processlist 的输出;

  • variable:

    ∘默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

  • threshold:

    ∘默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

    ∘监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

  • cycles:

    ∘默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

  • 连接参数:host、password、port、socket。

  • 其他一些重要参数:

  • iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

  • run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

  • sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

  • interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

  • dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

  • retention-time :监控数据保留时长,默认 30 天。

  • daemonize:以后台服务运行,默认不开启。

  • log:后台运行日志,默认为 /var/log/pt-stalk.log。

  • collect:触发发生时收集诊断数据,默认开启。

    ∘collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

    ∘collect-strace:收集跟踪数据,需要 strace 工具。

    ∘collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。