`
huqi
  • 浏览: 96961 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

提升基于JDBC的应用程序访问数据库的效率

阅读更多

一般来说,我们的JavaEE - JDBC企业应用程序的主要瓶颈之一就是在访问数据库,而数据库的瓶颈又主要在海量数据的查询上。如何解决这个问题?最简单的方法就是为数据库表建立精确的索引。

如何做到有效的建立索引?不妨利用P6Spy(http://www.p6spy.com/)及SQL Profiler(http://www.jahia.net/jahia/page597.html)软件包针对应用程序对数据的访问进行动态监测,通过利用P6Spy代理数据库驱动程序记录数据的访问、收集分析应用程序使用的SQL语句,找出性能瓶颈,生成优化方案报告及建立索引的SQL脚本。

  1. 获取 p6spy-install.jar (http://www.p6spy.com
  2. 从 p6spy-install.jar 中得到p6spy.jar,这就是监测程序的软件包,将其加入您的用程序classpath中。
  3. 将应用程序的数据库驱动改换成由P6Spy提供的代理驱动,在Spring中可以这样配置:
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
      
    <!—这是你原来的数据库驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver -->
      
    <property name="driverClassName">
        
    <!--这是P6Spy的代理驱动-->
        
    <value>com.p6spy.engine.spy.P6SpyDriver</value>
      
    </property>
      
    <property name="url">
        
    <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=sample</value>
      
    </property>
      
    <property name="username"><value>sa</value></property>
      
    <property name="password"><value>sa</value></property>
    </bean>
  4. 修改 spy.properties 文件,在其中配置你真正的数据库驱动程序(详细下面说)。

通过以上的步骤,你就完成的P6Spy的配置,启动应用后,P6Spy就会对您的应用进行监测并产生相应的日志文件。

以下,我们将通过配置 SQL Profiler 对P6Spy的监测数据进行收集和分析: 

  1. 获取 sqlprofiler-0.3-bin.zip(http://www.jahia.net/jahia/page597.html
  2. 替代上面的步骤 4,从sqlprofiler-0.3-bin.zip中获取 spy.properties 配置文件,这就是P6Spy监测程序的配置文件,我们需要在这个文件中为代理配置真正的数据库驱动程序:
    # oracle driver
    # realdriver
    =oracle.jdbc.driver.OracleDriver

    # mysql Connector/J driver
    # realdriver
    =com.mysql.jdbc.Driver

    # informix driver
    # realdriver
    =com.informix.jdbc.IfxDriver

    # ibm db2 driver
    # realdriver
    =COM.ibm.db2.jdbc.net.DB2Driver

    # the mssqlserver driver
    realdriver
    =com.microsoft.jdbc.sqlserver.SQLServerDriver

    #specifies another driver to use
    realdriver2
    =
    #specifies a third driver to use
    realdriver3
    =
    最后,将这个文件放置在你应用程序classpath的根下即可。
  3. 在spy.properties中,我们还需要配置更多的信息以收集数据,可以利用Log4j向网络上输出性能监测数据,这样Sql Profiler软件包就能收到数据并进行分析,当然,您要在配置文件中指定接收数据的网络监听地址和端口。
    #specifies the appender to use for logging
    appender
    =com.p6spy.engine.logging.appender.Log4jLogger
    #appender
    =com.p6spy.engine.logging.appender.StdoutLogger
    #appender
    =com.p6spy.engine.logging.appender.FileLogger
    # name of logfile to use
    , note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log) (used for file logger only)
    #logfile     
    = spy.log

    # append to  the p6spy log file.  if this is set to false the
    # log file is truncated every time.  (file logger only)
    append
    =true

    #The following are for log4j logging only
    #log4j.appender.STDOUT
    =org.apache.log4j.ConsoleAppender
    #log4j.appender.STDOUT.layout
    =org.apache.log4j.PatternLayout
    #log4j.appender.STDOUT.layout.ConversionPattern
    =p6spy - %m%n

    log4j.appender.SQLPROFILER_CLIENT
    =org.apache.log4j.net.SocketAppender
    log4j.appender.SQLPROFILER_CLIENT.RemoteHost
    =localhost
    log4j.appender.SQLPROFILER_CLIENT.Port
    =4445
    log4j.appender.SQLPROFILER_CLIENT.LocationInfo
    =true

    #log4j.logger.p6spy
    =INFO,STDOUT
    log4j.logger.p6spy
    =DEBUG, SQLPROFILER_CLIENT
  4. 从sqlprofiler-0.3-bin.zip中获取 sqlprofiler.jar,这是一个图形界面的应用程序,它被用来接收监测数据(来自上面配置的P6Spy)和生成分析结果。

至此,准备工作已经全部完成。执行分析的应用:

首先执行 sqlprofiler.jar(利用javaw),其在指定端口监听应用程序通过Log4j发来的监测数据。接下来就可以运行经过P6Spy代理的应用程序了。

在 SQL Profiler 的界面可以看到数据的采集。应用程序运行一段时间后(充分反映您应用程序的运行周期),点击“||”暂停按钮结束数据收集,接下来就是分析数据、生成解决方案、优化文件(索引脚本)。

分享到:
评论

相关推荐

    基于JDBC的最好用数据库访问类

    总的来说,"基于JDBC的最好用数据库访问类"是Java开发中一个实用的工具,它通过提供高层抽象,简化了数据库操作,提升了开发效率和代码质量。对于初学者而言,理解并掌握此类的使用,有助于更好地理解和运用JDBC,而...

    基于JDBC的数据库连接池技术研究与应用

    然而,Java应用程序通过JDBC直接访问数据库的方式存在一些问题,如频繁建立和关闭连接,可能导致系统资源的浪费和性能瓶颈。 JDBC是Java语言与数据库交互的接口,提供了面向开发人员的API和面向底层的JDBC驱动程序...

    数据库系统的JDBC驱动程序.rar

    JDBC(Java Database Connectivity)是一种标准API,由Sun Microsystems(现为Oracle公司)开发,它允许Java应用程序连接到不同类型的数据库,实现数据的存取和处理。本压缩包包含针对MySQL、SQL Server和Oracle这三...

    JDBC概述通过案例介绍数据库应用开发的过程

    JDBC(Java Database Connectivity)是Java编程语言中用于规范客户端程序如何访问数据库的应用程序接口,它是Java程序与各种数据库系统交互的标准API。通过JDBC,开发者可以编写出与数据库无关的代码,实现数据存取...

    java数据库应用程序编程指南

    14. **性能优化**:了解索引、查询优化、事务粒度调整、连接池配置等技巧,可以显著提升Java数据库应用程序的性能。 以上就是“Java数据库应用程序编程指南”中可能涵盖的主要知识点,学习和熟练掌握这些内容,对于...

    基于Java语言的数据库访问技术应用研究.pdf

    在实际的开发应用过程中,这四种数据库访问技术针对使用者所提供的编程接口对象并不相同,其中,基于 Java 语言的 JDBC 常用数据库访问技术主要是软件开发技术人员对数据库连接对象的获取,由此实现对计算机应用系统...

    JDBC与Java数据库程序设计

    因此,出现了许多基于JDBC的Object-Relational Mapping(ORM)框架,如Hibernate和MyBatis,它们简化了数据库操作,提高了开发效率。 总之,JDBC是Java开发者与数据库进行交互的核心工具,理解并熟练掌握JDBC的使用...

    jdbc与dbcp数据库连接

    而DBCP(Jakarta DBCP,也称为Apache DBCP)是一个基于JDBC的数据库连接池组件,它能够有效地管理和复用数据库连接,从而提高应用性能。下面我们将详细探讨这两个概念以及它们如何协同工作。 **JDBC基础知识** ...

    基于JDBC的数据库连接池高效管理策略

    ### 基于JDBC的数据库连接池高效管理策略 #### 一、连接池概念及简介 ##### 1.1 引言 ...通过合理配置连接池参数,不仅能够显著提升数据库访问效率,还能简化应用程序的复杂度,提高整体系统的稳定性和可靠性。

    基于Java数据库编程及其应用分析.pdf

    Java Applet是一种可以在Web浏览器中运行的小型Java应用程序,允许开发者在网页中嵌入一些动态内容。随着技术的发展,虽然Applet的使用频率有所降低,但它在早期互联网应用中扮演了重要角色。 在进行Java数据库编程...

    基于jdbc的连接池开发技术

    本文详细介绍了基于JDBC的数据库连接池技术,通过对连接池原理、优势及其实现方式的讨论,证明了连接池技术在提高数据库访问效率方面的有效性。在实际应用中,合理设计和配置连接池,能够极大地提升应用程序的性能和...

    JDBC(连接池)连接三种数据库

    通过连接池,应用程序可以快速获取到已建立的数据库连接,而无需每次都进行创建和关闭的操作,这样能显著提升效率并降低系统的开销。 在实现上,我们可以使用反射机制动态地加载不同的数据库驱动,以支持Oracle、...

    基于三层架构和JDBC数据库连接池的商品管理系统

    《基于三层架构和JDBC数据库连接池的商品管理系统》是一个典型的Java Web项目,它采用标准的MVC(Model-View-Controller)设计模式,通过三层架构进行业务逻辑的组织,以提高系统的可维护性和可扩展性。在这个系统中...

    数据源代理—基于Internet模式的数据库高效访问机制.docx

    - **通过客户端应用程序直接访问数据库**:虽然可以直接通过客户端应用程序访问数据库,但这增加了数据库负担,降低了安全性,不推荐使用。 - **客户端应用程序通过WEB服务器中间插件访问数据库**:结合前两种方法...

    jdbc的常用数据库驱动jar包

    在IT领域,JDBC(Java Database Connectivity)...正确选择和配置驱动,可以确保应用程序与数据库之间的通信高效、稳定,从而提升整体系统性能。在开发过程中,适时优化数据库查询和连接管理,也是提升应用性能的关键。

    基于Web数据库应用技术

    Servlet可以执行复杂的业务逻辑,并能够直接访问数据库,是实现动态Web应用的强大工具。 - **JavaBean**:是一种Java类,遵循特定的设计模式,用于封装数据和业务逻辑。JavaBean常用于表示实体对象,比如数据库记录...

    达梦数据库jdbc驱动文件大全,内涵6,7,8三个版本

    - Web应用:在基于Java的Web应用程序中,如Spring Boot或Struts,可以通过配置文件设置数据源,利用达梦JDBC驱动连接数据库。 - 数据迁移:使用Java工具进行数据库数据迁移时,可以利用这些驱动实现达梦数据库与...

    达蒙数据库jdbc驱动

    综上所述,达蒙数据库的JDBC驱动是Java开发者与达蒙数据库交互的重要工具,理解其工作原理和使用方法对于高效地开发和维护数据库应用程序至关重要。不同版本的驱动提供了不同的功能和优化,选择适合的版本可以提升...

Global site tag (gtag.js) - Google Analytics