转:应用数据库典型的三大类型性能问题分析
上一篇 /
下一篇 2014-02-13 10:43:39
/ 个人分类:LR
1。过量的数据库调用
解决方法:从数据库中大量取得所要求的数据,避免应用程序反复回调数据库
2。数据库连接池的问题
问题1。连接池资源泄露
解决方法:分析程序代码,是否没有close()连接,是否遗漏了finally块,或者是close了,但未成功。
问题2。连接池大小
连接池过小导致连接池满后,新的客户无法连接上系统,在日志中出现错误信息。
解决方法:
经验法则1:
数据库连接池数=线程池数*每个线程需要连接数据库的平均数*1.1(1.1的含义是:增加10%的峰值期负载)
通常每个线程需要连接数据库的平均数是1,即当线程池数是120时,数据库池数就是132
经验法则2:设置最初池大小=最大池大小
SQL语句及其索引或锁定属性不合理可能引发DISKIO过忙(磁盘读写数据)或者CPU过忙(在内存中索引排序),造成执行时间过长,阻塞线程式执行,最终引发系统挂起或者执行超时引发系统挂起。
例如:错误信息如下:
oracle.jdbc.driver.oraclestatement.doexecutewithtimeout(oraclestatement.java:2857) at oracle.jdbc.driver.oraclereparedstatement.executeupdate
死锁引起系统挂起的错误信息如下:
java.sql.sqlexception:ora-00060:deadlock detected while waiting for resource at oracle.jdbc.dbaccess.dberror.throwsqlexception(dberror.java:170)
解决方法:优化SQL语句及其索引或锁定属性
收藏
举报
TAG: