p6spy sql测试工具

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 引用:http://www.oschina.net/p/p6spy P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。

引用:http://www.oschina.net/p/p6spy

P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。

P6SPY提供了如下几个功能:

记录SQL语句的执行时间戳。 
记录SQL语句类型 
记录SQL填入参数的和没有填入参数的SQL语句 
根据配置的时间控制SQL语句的执行时间,对超出时间的SQL语句输出到日志文件中

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

 

 

引用:http://blog.163.com/ky_199/blog/static/143176020107423031979/

P6spy是什么?

P6Spy 是针对数据库访问操作的动态监测框架(为开源项目,项目首页:www.p6spy.com)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。P6Spy 分发包包括P6Log,它是一个可记录任何 Java 应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。

我们最需要的功能,查看sql语句,不是预编译的带问号的哦,而是真正的数据库执行的sql,更直观,更简单。

 

下载地址:http://www.p6spy.com/download.html

目前最新的版本为1.3

 

 


需要准备什么?

我们最需要的是这些:

Spy.properties是p6spy的配置文件,里面定义了类似log4j的日志格式,文件路径等。

P6spy.jar则是主要的jar文件。

 p6spy介绍 - 白一子 - 梦に蓝桥

使用maven的可以直接加入p6spy依赖,但是spy.properties依旧得copy啦~

 p6spy介绍 - 白一子 - 梦に蓝桥

 


开始一个demo

1、  copy压缩包里的spy.properties到classpath下,你想敲也可以…………

2、  打开spy.properties,里面比较重要的有

realdriver=org.gjt.mm.mysql.Driver

代表真正的数据库驱动

上面有一些注释的驱动,直接把#号去掉就可以,保留一个生效即可

 p6spy介绍 - 白一子 - 梦に蓝桥

我本地因为有一个mysql数据库来测试,所以我使用mysql驱动

 p6spy介绍 - 白一子 - 梦に蓝桥

3、  简单地使用spring的jdbc模板来查询,测试输出的sql

p6spy介绍 - 白一子 - 梦に蓝桥

 


<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
<constructor-arg ref="dataSourceTarget"></constructor-arg>
</bean>

 

 

 

 

这段表明了使用p6spy来监控sql,相当于一个代理的数据源,但是实际上引用的还是我们自己的真正的数据源,但是这里使用构造注入不太友好,呵呵。

4、  简单执行demo

 

 


代码 


package p6spy;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class SqlDemo {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("p6spy/spring.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
List list = jdbcTemplate.queryForList("select * from user where id=?", new Object[]{1});
System.out.println(list.size());
}
}

 

 

 

 

其中包含一个带参数的sql    select * from user where id=?

 

成功运行后查看日志,默认的文件名为spy.log,会生成在项目根目录下。

 p6spy介绍 - 白一子 - 梦に蓝桥

看看,是不是预编译的sql和实际的sql都打出来了

 

如果出现

Warning: driver com.mysql.jdbc.Driver is a real driver in spy.properties, but it has been loaded before p6spy.  p6spy will not wrap these connections.  Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties

出现这句话的时候把deregisterdrivers=true

 

对于一个已经存在的工程,我们只要做3步就可以了

1、  导入p6spy.jar包

2、  将工程的数据库驱动换成相对应的p6spy驱动

3、  将spy.properties的真实驱动项指向你真正的驱动

Enjoy it……

 

 

这个包在测试的时候相当的方便,特别是调试sql的时候。。。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 存储 数据库
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
|
2月前
|
SQL 数据库
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
72 0
|
2月前
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
496 2
|
9月前
|
SQL Java 数据库连接
mybatis之动态SQL测试环境的搭建以及if语句的使用~
mybatis之动态SQL测试环境的搭建以及if语句的使用~
112 0
mybatis之动态SQL测试环境的搭建以及if语句的使用~
|
2月前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
217 0
|
2月前
|
SQL 关系型数据库 MySQL
Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
【4月更文挑战第7天】Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
41 0
|
2月前
|
SQL
leetcode-SQL-1280. 学生们参加各科测试的次数
leetcode-SQL-1280. 学生们参加各科测试的次数
40 0
|
2月前
|
SQL 数据挖掘 关系型数据库
「SQL面试题库」 No_87 学生们参加各科测试的次数
「SQL面试题库」 No_87 学生们参加各科测试的次数
|
7月前
|
SQL 网络安全 数据库
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
65 2
|
2月前
|
SQL Java 数据库连接
【Java调试】通过SqlSessionFactory类对象获取mapper文件内的动态SQL在执行时的完整SQL及参数(2种使用方法+测试Demo及结果)
【Java调试】通过SqlSessionFactory类对象获取mapper文件内的动态SQL在执行时的完整SQL及参数(2种使用方法+测试Demo及结果)
80 0

热门文章

最新文章