p6spy sql测试工具

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 引用: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的时候。。。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL 存储 数据库
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
250 1
|
SQL 安全 关系型数据库
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。 总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。 请看这段代码
694 99
|
SQL 数据库
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
311 0
|
SQL Java 数据库连接
mybatis之动态SQL测试环境的搭建以及if语句的使用~
mybatis之动态SQL测试环境的搭建以及if语句的使用~
210 0
mybatis之动态SQL测试环境的搭建以及if语句的使用~
|
11月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
744 1
|
11月前
|
SQL 安全 测试技术
墨者学院sql手工测试记录
墨者学院sql手工测试记录
|
SQL 安全 关系型数据库
使用SQLMap进行SQL注入测试
使用SQLMap进行SQL注入测试
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
1255 0
|
SQL 关系型数据库 MySQL
Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
【4月更文挑战第7天】Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
201 0
|
SQL 网络安全 数据库
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
2021年中职“网络安全“江西省赛题—B-4:SQL注入测试(PL)
149 2