起因
近期公司打算把之前项目中的c3p0数据库连接池更换为druid,在给出替换方案前,需要先给出测试数据证明druid性能优于c3p0,于是便写了个demo进行对比测试。
一开始先要确定配置的没有问题,起码先要可以操作数据,就运行了一下测试方法。由于运行的时候其他事耽误了一下,就跑了10min,然后插入了86万条数据到sybase数据库中。
在正式测试之前我打算把表中原有数据清空,然后便遇到了数据库卡死的情况,使用delete、drop均是如此。
在解决这个卡死的问题时,又发现了原本思路上的问题,总结大致如下。
问题分析
要进行两个连接池组件的对比测试,就需要保证数据库的前提条件是一样的,起码要相似,我一开始想的就是清空数据,清空数据的操作是delete
,但是这个思路存在两个问题
问题一
delete操作删除数据并不会清除之前占用的空间,如果真的这样做了,那么测试的前提条件实际上是不一样的。
解决办法
因此,在我这次测试的场景中,清空数据的操作应该使用truncate
,这个操作不仅会清空数据,还会清空这些数据占用的空间以及相应索引占用的空间。
只有这样才能更好的保证连接池组件测试前,数据库条件更接近,使外部环境的影响降低到更小。
问题二
但是,即便清空了数据表的数据,也清空了数据表的空间和索引占用的空间,还是存在着一个问题,那就是数据库日志的问题。
s