为什么我的程序得到数据库连接这么慢?

BadPattern 2010-02-24 09:21:44
目前为了实现一个功能,而采用JDBC短时间内不停调用几次:Connection conn = DriverManager.getConnection(url,username,password);语句来获得数据库连接,前段时间这个语句执行的倒挺快的,后来就变的很慢,经常要执行个四五秒,请教下各位可能是什么原因?
...全文
409 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
chonganwang 2010-02-26
  • 打赏
  • 举报
回复
可能是资源没有及时关闭,链接数目太多了导致数据库压力太大从而链接缓慢吧。
qianmz 2010-02-25
  • 打赏
  • 举报
回复
引用 4 楼 fairy_dy 的回复:
1 看你的Connection ,PreparedStatement, ResultSet是否关闭?
2 看你的查询语句是否有问题?
3 考虑下连接池

连接池
  • 打赏
  • 举报
回复
每用一次都使用 DriverManager 去连那当然慢了,建议您使用数据库连接池。
小孟阿良 2010-02-25
  • 打赏
  • 举报
回复
建议你只把Class.forName()封装到static块中,getConnection()这个方法,不要放在那个static中,并且Connection要关闭,不然就会出现你所说的慢了。
BadPattern 2010-02-25
  • 打赏
  • 举报
回复
再描述一下我的程序吧,其实就是个检测程序,项目有主数据库和备份数据库,检测程序有一个静态块,在tomcat启动的时候会加载这个静态块,调用getConnection方法来获得连接(就是这个方法执行很慢),类加载完以后会不停的查询虚表(能查记录就说明数据库正常,抛了异常说明数据库出了故障就切换到备用数据库)

设计静态块是为了只得到一次连接,然后用这个连接查询虚表来检测数据库是否正常(不想每次都得到连接来检测数据库是否正常,因为得到连接和销毁连接会很消耗系统的资源)。所以这里的连接不能关闭,但它也只是一个连接,如果说因为这一个连接而导致很慢,解释不通吧?再说了,只有在没有连接的情况下我才执行getConnection方法的
feicuishen 2010-02-25
  • 打赏
  • 举报
回复
如果既想连上库不断开又要不停的连上去,一个考虑增加数据库的连接数,二是让数据库自己去清空不要的连接。
painss 2010-02-25
  • 打赏
  • 举报
回复
重启数据库,然后再连接,看是不是还很慢。。这样分析吧
JasonXiaohan 2010-02-25
  • 打赏
  • 举报
回复
很可能是前面的连接用完后,没有及时的关闭,所以导致再次连接时反应很慢。
jack_liu4Ye 2010-02-25
  • 打赏
  • 举报
回复
没有释放资源,不卡都奇怪,改进代码吧,关闭暂时不用的链接!!!
owen_008 2010-02-25
  • 打赏
  • 举报
回复
给楼主顶一个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~哈哈
BadPattern 2010-02-25
  • 打赏
  • 举报
回复
引用 6 楼 xys_777 的回复:
引用楼主 dr8737010 的回复:
  目前为了实现一个功能,而采用JDBC短时间内不停调用几次:Connection conn = DriverManager.getConnection(url,username,password);语句来获得数据库连接,前段时间这个语句执行的倒挺快的,后来就变的很慢,经常要执行个四五秒,请教下各位可能是什么原因?

是本机连接吗?
如果是网络,看一下是否网络设置上是否有所改变


项目是部署在本机测试的,连接的是其他机器的数据库
BadPattern 2010-02-25
  • 打赏
  • 举报
回复
引用 20 楼 zhangliangming_87 的回复:
引用 19 楼 andyan_2008 的回复:
每次用完之后,一定要关闭数据库连接

每次发帖之后,一定要结了这个帖子

那是一定,那是一定 :-)
扁鵲東南飛 2010-02-25
  • 打赏
  • 举报
回复
引用 19 楼 andyan_2008 的回复:
每次用完之后,一定要关闭数据库连接


每次发帖之后,一定要结了这个帖子
andyan_2008 2010-02-25
  • 打赏
  • 举报
回复
每次用完之后,一定要关闭数据库连接
welllit 2010-02-25
  • 打赏
  • 举报
回复
看看数据库连接数是多少,改大点
BadPattern 2010-02-25
  • 打赏
  • 举报
回复
可能查出来原因了,语句连接主数据库很快,备份数据库却很慢,用PL/SQL Developer工具连接备份数据库会报:TNS:连接超时

所以说很可能是数据库的问题,而不是我程序的问题 :-)
dinghun8leech 2010-02-24
  • 打赏
  • 举报
回复
我T5550+2G内存的机器在用jdbc建立一条本地的mysql连接时大概要耗去100毫秒样子,连debug时都会感到明显的一卡。
正常的,如果无法容忍,除了改善设计之外,恐怕得请连接池出马了。
永生天地 2010-02-24
  • 打赏
  • 举报
回复
引用楼主 dr8737010 的回复:
  目前为了实现一个功能,而采用JDBC短时间内不停调用几次:Connection conn = DriverManager.getConnection(url,username,password);语句来获得数据库连接,前段时间这个语句执行的倒挺快的,后来就变的很慢,经常要执行个四五秒,请教下各位可能是什么原因?


是本机连接吗?
如果是网络,看一下是否网络设置上是否有所改变
Z_FEI 2010-02-24
  • 打赏
  • 举报
回复
我想应该是lz程序中哪里没有及时释放资源的原因吧!
Fairy_dy 2010-02-24
  • 打赏
  • 举报
回复
1 看你的Connection ,PreparedStatement, ResultSet是否关闭?
2 看你的查询语句是否有问题?
3 考虑下连接池
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧