c3p0和druid性能测试过程中sybase卡死的问题解决过程记录-阿里云开发者社区

开发者社区> 涂宗勋> 正文

c3p0和druid性能测试过程中sybase卡死的问题解决过程记录

简介:
+关注继续查看

起因

近期公司打算把之前项目中的c3p0数据库连接池更换为druid,在给出替换方案前,需要先给出测试数据证明druid性能优于c3p0,于是便写了个demo进行对比测试。
一开始先要确定配置的没有问题,起码先要可以操作数据,就运行了一下测试方法。由于运行的时候其他事耽误了一下,就跑了10min,然后插入了86万条数据到sybase数据库中。
在正式测试之前我打算把表中原有数据清空,然后便遇到了数据库卡死的情况,使用delete、drop均是如此。
在解决这个卡死的问题时,又发现了原本思路上的问题,总结大致如下。

问题分析

要进行两个连接池组件的对比测试,就需要保证数据库的前提条件是一样的,起码要相似,我一开始想的就是清空数据,清空数据的操作是delete,但是这个思路存在两个问题

问题一

delete操作删除数据并不会清除之前占用的空间,如果真的这样做了,那么测试的前提条件实际上是不一样的。

解决办法

因此,在我这次测试的场景中,清空数据的操作应该使用truncate,这个操作不仅会清空数据,还会清空这些数据占用的空间以及相应索引占用的空间。
只有这样才能更好的保证连接池组件测试前,数据库条件更接近,使外部环境的影响降低到更小。

问题二

但是,即便清空了数据表的数据,也清空了数据表的空间和索引占用的空间,还是存在着一个问题,那就是数据库日志的问题。
sybase在进行insert操作的时候会写日志,那么如果日志一直在增加,势必降低日志写入的性能,也就整体上降低了数据入库操作的性能,所以还应该每一次测试前都在清空数据的同时,也清空日志。
那么日志的问题,也是导致一开始所说删除86万数据使sybase卡死的主要原因了。
sybase在delete操作时,也会写日志,而这个日志的大小是有默认值的,并且不会自动释放。
由于我之前对数据库进行了很多操作,长达几个月的操作都没有清过日志,所以导致这一次insert八十多万数据后日志空间不足,然后再delete时sybase卡死。

解决办法

对于日志空间不足的问题,有两种解决办法,一是扩容,二是清日志,我这次选择的就是第二种,因此也只记录一下第二种。
首先,需要确定是否真的是日志空间不足,查询的命令如下:


sp_spaceused syslogs

如果确定了确实是日志空间不足了,那么就可以再使用如下命令清除历史日志:

dump transaction dbname with truncate_only

清除日志的操作并不唯一,上述清日志的命令是比较安全的,会进行一些事物检查,因此性能就不如下边这条操作,而下边这条性能会变快,但是相对而言就没有那么安全,相当于是强制删除。

dump transaction dbname with no_log

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
多模态视频商品检索记录再刷新!第二届淘宝直播算法大赛完美落幕
多模态视频商品检索记录再刷新!第二届淘宝直播算法大赛完美落幕
39 0
wamp You don't have permission to access / on this server等问题的解决.
原文: wamp You don't have permission to access / on this server等问题的解决. 安装完wamp之后,安装网上的教程设置虚拟路径,出现了问题,同样的问题由不同的原因导致。
885 0
InnoDB的行记录格式, Compact, Redundant, Compressed, Dynamic
InnoDB存储引擎和大多数数据库一样(如Oracle和Microsoft SQL Server数据库),记录是以行的形式存储的。这意味着页中保存着表中一行行的数据。到MySQL 5.1时,InnoDB存储引擎提供了Compact和Redundant两种格式来存放行记录数据,Redundant是为兼容之前版本而保留的,如果你阅读过InnoDB的源代码,会发现源代码中是用PHYSICAL RECORD(NEW STYLE)和PHYSICAL RECORD(OLD STYLE)来区分两种格式的。
887 0
TCP的backlog导致的HBase超时问题排查
TCP的backlog导致的超时问题排查
2511 0
ScrollView属性fillViewport解决android布局不能撑满全屏的问题
转:http://blog.sina.com.cn/s/blog_6cf2ea6a0102v61f.html   开发项目中遇到一个问题,布局高度在某些国产酷派小屏幕手机上高度不够全部显示,于是使用了ScrollView嵌套LinearLayout,但问题又出现了,在大屏幕手机如三星note3手机上下面会留白,问题的解决办法是在第一层LinearLayout里面嵌套多个LinearLayout,最重要的是将ScrollView中android:fillViewport设置为true。
1409 0
解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
<span style="color:rgb(51,102,255); font-size:24px"><span style="font-size:18px">对于这个问题,我相信我的方法已经能帮90%的人解决了!<br> 当你用Eclipse运行web项目的时候,你就会看到控制台出现:<br></span><span style="color:#ff0000"><span style
1072 0
centos下利用docker搭建hbase集群过程记录
安装docker #查看你当前的内核版本(Docker 要求 CentOS 系统的内核版本高于 3.10 ) uname -r #安装 Docker yum -y install docker #启动 Docker 后台服务 service docker start #测试运行 hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
1786 0
+关注
涂宗勋
认真生活,快乐工作,保持理想!https://blog.csdn.net/tuzongxun
274
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载