转:应用数据库典型的三大类型性能问题分析

上一篇 / 下一篇  2014-02-13 10:43:39 / 个人分类:LR

域名
应用数据库典型的三大类型性能问题分析如上:
1。过量的数据库调用
   解决方法:从数据库中大量取得所要求的数据,避免应用程序反复回调数据库
2。数据库连接池的问题
   问题1。连接池资源泄露
   解决方法:分析程序代码,是否没有close()连接,是否遗漏了finally块,或者是close了,但未成功。
 
   问题2。连接池大小
   连接池过小导致连接池满后,新的客户无法连接上系统,在日志中出现错误信息。
   解决方法:
   经验法则1:
       数据库连接池数=线程池数*每个线程需要连接数据库的平均数*1.1(1.1的含义是:增加10%的峰值期负载)
通常每个线程需要连接数据库的平均数是1,即当线程池数是120时,数据库池数就是132
    经验法则2:设置最初池大小=最大池大小
 
    问题3。SQL语句及其索引或锁定属性问题
    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:

 

评分:0

我来说两句

Open Toolbar