应用数据库三大典型性能问题

  • 格式:txt
  • 大小:1.62 KB
  • 文档页数:1

1、过量的数据库调用
问题:
常见的性能瓶颈来自过量的数据调用,引发这些问题不一定是SQL查询的Execute()或Update(),而是应用程序与数据库的交互有关,例如:ResultSet操作,常见的问题是指定了过于精细的查询条件然后使用ResultSet()详细搜寻返回的数据。
解决办法:
从数据库中在量取得所要求的数据,避免应用程序反复调用数据库。
2、数据库连接池问题
问题1:连接池资源泄漏
虽然可以通过WebLogic自带工具、Jprofiler工具或自编工具检测到数据库连接池资源泄漏,但是很难在应用程序代码本身准确定位泄漏的源头!
解决办法:
仔细分析程序代码,是否没有Close()连接?是否泄漏了Finally块?或者尽管有Close()但并没有成功?
问题2:连接池太小
连接池过小也会导致连接当满后,新的用户无法连接上系统,在日志中出现错误信息。一般的解决方法是增大连接池。但另一方面,连接池过大会造成资源无效损耗,可能会出现新的性能问题,那么连接池调到多大比较合适呢?
解决办法:
经验法则1:数据库连接池数=线程池数*每个线程需要连接数据库数据的平均数*1.1(1.1的含义是增加10%的峰值期负载),通常每个线程需要连接数据库数据的平均数是1,即当线程池数为120时,数据库连接池数为132.
经验法则2:设置最初池大小=最大池大小
3、SQL语句及其索引或锁定属性的问题
问题:SQL语句及其索引或锁定属性不合理可能引发DISKIO过忙(磁盘读写数据)或者CPU过忙(在内存中索引排序),造成执行时间过长,阻塞线程的执行,最终引发系统挂起或者执行超时引发系统挂起,例如错误信息:
oracle.jdbc.driver.OracleSrarement.doExecuteWithTimeout(OracleStatement.java:2857
)at oracle.jdbc.driver.OraclePreparedSrarement.executeUpdate
死锁引发系统挂起,例如错误信息:
java.sql.SQLException:ORA-00060:deadlock tetected while waiting for resource at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError,java:170)
解决办法:
优化SQL语句及其索引锁定属性。

下载文档原格式

  / 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。