为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。

快速阅读

为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。

我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以方便调试bug 或者确认最终生成的sql语句

为什么要监控sql语句?

  1. 因为程序大了以后,sql语句有可能被多个地方调用 。你不能确认当前时间是不是只执行了你需要的那条语句 。
  2. 有的持久层框架采用linq的语法来写sql , 程序中不方便输出sq语句
  3. 线上运行的程序,没有办法更改程序。但需要确认问题出错在哪里?执行了哪些sql语句。可以根据sql 语句来判断 出错的地方。

如何在mysql中监控sql语句?

默认mysql是不开启的sql语句监控的,当需要开启的时候 ,执行以下命令。

SHOW VARIABLES LIKE "general_log%"; -- off 是关闭,如果是on表示已经开启
SET GLOBAL general_log = 'ON'; --开启日志监控。

我是已经开启的状态 ,如果没有开启的时候 ,general_log 是显示的off .

如下图所示 ,会看到日志默认保存的路径 位置

C:\ProgramData\MySQL\MySQL Server 5.5\Data\hcb-PC.log

1564155112158

接下来我们执行几条sql语句来查看

执行sql

SELECT * FROM `platform`
UPDATE `platform` SET platform_type=2 WHERE id=1

接下来我们去看下日志

1564155346364

可以看到日志中包含了

Time                 Id Command    Argument

分别对应时间 ,id, 命令, 参数

参数指的就是执行的sql语句。

如何让mysql中的sql语句显示在表中

在日志中查看不方便 ,如果让sql语句显示在数据库中的一个表中?

执行如下sql

SET GLOBAL log_output = 'TABLE'; 
SELECT * FROM mysql.general_log ORDER BY  event_time DESC

1564155773993

用processlist显示

USE `information_schema`;
SELECT * FROM PROCESSLIST WHERE info IS NOT NULL;

具说这种方式可以实时显示,但是我的不知道为啥不能实时显示新的sql 先记录一下。

1564156127696

友情提示

​ 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 监控 SQL Server 的方式有很多种,以下是一些最常用的方式: 1. 使用 JDBC 驱动程序:Java 的 JDBC 驱动程序提供了一种与 SQL Server 进行交互的方式,可以通过编写 Java 代码来监控 SQL Server 的各种指标,比如查询数据库的活动连接数、查询缓存的命中率等等。 2. 使用 Performance Monitor:Windows 操作系统自带的 Performance Monitor 工具可以监控 SQL Server 的性能指标,比如 CPU 使用率、内存使用率、磁盘 I/O 等等。可以通过编写 Java 代码来获取 Performance Monitor 的数据。 3. 使用 SQL Server Profiler:SQL Server Profiler 是一个可视化的工具,可以监控 SQL Server 的各种事件,比如查询语句的执行时间、查询计划的使用情况等等。可以通过编写 Java 代码来调用 SQL Server Profiler 并获取数据。 4. 使用第三方工具:有一些第三方工具可以用来监控 SQL Server,比如 AppDynamics、New Relic 等。这些工具可以监控 SQL Server 的各种指标,并提供可视化的仪表盘和报表。 其中,使用 JDBC 驱动程序是最常用的方式之一,可以通过以下几个步骤来监控 SQL Server: 1. 下载 SQL Server JDBC 驱动程序,并将其添加到 Java 项目中。 2. 在 Java 代码中编写 SQL 查询语句,来获取需要监控的指标数据。比如查询活动连接数可以使用: ``` SELECT COUNT(*) AS active_connections FROM sys.dm_exec_connections WHERE session_id > 50; ``` 3. 使用 JDBC 驱动程序连接 SQL Server,并执行查询语句,获取数据。 ``` String url = "jdbc:sqlserver://localhost:1433;databaseName=test;user=sa;password=secret"; Connection con = DriverManager.getConnection(url); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT COUNT(*) AS active_connections FROM sys.dm_exec_connections WHERE session_id > 50"); while (rs.next()) { int activeConnections = rs.getInt("active_connections"); // 处理数据 } ``` 4. 将数据存储到数据库中或发送到消息队列等其他系统中进行处理。 需要注意的是,使用 JDBC 驱动程序监控 SQL Server 可能会对 SQL Server 的性能产生一定的影响,需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值