Java访问SQL数据库的优化探讨

来源:本站
导读:目前正在解读《Java访问SQL数据库的优化探讨》的相关信息,《Java访问SQL数据库的优化探讨》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Java访问SQL数据库的优化探讨》的详细说明。
简介:本文概括了Java连接数据库的主要方法,并对JDBC的特点进行了分析。进而从提高访问数据库效率的角度,论述了采用数据库连接池技术、优化SQL语句格式和多线程方法等可提高Java访问数据库效率的方法。-文章出处:电子技术网

导读:本文概括了Java连接数据库的主要方法,并对JDBC的特点进行了分析。进而从提高访问数据库效率的角度,论述了采用数据库连接池技术、优化SQL语句格式和多线程方法等可提高Java访问数据库效率的方法。

1.概述

在软件开发中通常都会涉及到数据库的应用。而数据库的连接则是数据库应用的基础性工作。在当前主流的编程语言中,Java语言因为其不依赖系统平台、健壮、安全,一次编写便可各处运行的特色,使之成为一种应用越来越广泛的编程语言。在应用Java技术访问数据库时,需要利用Java的数据库访问技术来实现。在Java中实现对数据库的访问时是以JDBC为基础的,而JDBC则是由Java语言所编写的一系列的类和接口组成,通过JDBC能够非常方便的连接任意类型的数据库。

2.JDBC特点分析

Java中的JDBC接口有两个,一个是位于底层的JDBC Driver API,另一个是用于面向程序员的应用程序接口,即ApplicationPrograming Interface.其中JDBC Driver API有四种类型:一是JDBC-ODBC桥形式、二是部分Java驱动程序和本机API的组合形式、三是面向数据库中间件的纯Java驱动程序、四是采用直接面向数据库的纯Java驱动程序。上述四类形式中,JDBC-ODBC桥需要在客户端安装必要的ODBC驱动程序,否则无法读取ODBC数据源。这也是这类方式的主要缺点。采用部分Java驱动程序和本机API的组合形式时,要求在客户端使用本地代码来实现对数据库客户端的API调用,从而将JDBC API转化成商用数据库提供的API来完成数据库的数据的提取和存储。第三种方式不必考虑Java程序的细节,因这些程序细节在中间件服务器中是背隐藏了的,因此利用这一特点可以用相同的代码来访问不同的数据库。这也是这一访问方式最大的优点。第四种方式则最为直接,不论是客户端的请求还是程序的执行结果都直接在服务器上直接处理,采用该方式无需像前面两种方法那样需要安装驱动程序或中介软件,这也是这种应用方式的主要优点。

而JDBC API则相对更为的固定,也有四种主要的类型,即:java.sql.DriverManage、java.sql.Connection、java.sql.Statement和java.sql.ResultSet.这四种类型分别执行不同的任务,且分工明确,因此再次不多做论述。

以上不同的连接方式和方法在针对不同类型的数据库时效率会存在一定的差异,随着数据库规模的加大,传统的数据库访问方式已经体现出弊端,在本文中将在介绍可提高Java访问SQL数据库效率运行效率的方法。

3.采用数据库连接池技术

数据库连接池技术是在JDBC2.0基础上提出并逐步完善的。其特点是通过重用一组连接对象,使所有用户之间共享一组己经打开的连接,节省了建立和释放数据库连接的时间,从而大幅度的提高Java对数据库的访问性能。

数据库连接池技术的基本原理是预先设计一个“缓冲池”,将各类资源放于该“缓冲池”中,主要是在“缓冲池”中预先存入一定的数据连接,在程序运行时再根据需要来从“缓冲池”中取出各连接中的一个,在对该连接的操作完成后将其重新放回“缓冲池”中。

此时对各连接的管理都由“缓冲池”来负责管理。通过连接池的方式,能够将很多工作都在“缓冲池”的范围内完成,并可通过对连接的控制和管理机制来提高运行效率。

在使用连接池技术时的关键问题是如何建立连接池以及对连接池中的各类连接的有效管理,这两部分内容也是研究连接池技术时的重要方向。一般而言,在建立连接池时,应在系统的初始化阶段通过读取XML文件中的特定配置参数来完成,从而可在内存中建立对于应用程序来讲是唯一的且配置参数也是确定的静态连接池。当完成连接池的建立后,需其保持稳定性,从而让其他线程能够在连接池中获取所需的连接。这种稳定性能够避免建立连接和关闭连接时的内存开销,从而提高内存的使用效率。

在建立起连接池后,更为重要的是对连接的有效管理,如果连接池中的连接管理混乱,反而会适得其反。不同的管理方式的处理效率有一定差异,在针对特定的问题时应当考虑设计出最佳的管理方式,因此连接池的分配和释放并没有所谓的最佳方法,在实践中,“Reference Counting”是一种是用较多的方式。

4.优化SQL语句格式

在利用Java访问数据库时,SQL语句的格式也会对访问效率造成影响。在实际应用中,常采用Statement对象来执行SQL语句。这种方式意味着每次都需要对数据库进行解析编译。

这无疑会降低对数据库的访问效率。如果采用PreParedStetment对象来执行SQL语句,则会是另外一种情形。当使用PreParedStetment时,按照相应机制,其命令会被数据库引擎解析编译,并存放于命令缓冲区内。采用Statement和PreParedStetment的主要区别是后者只需再次解析即可,而无需再次编译。因此在处理大量重复执行的SQL命令语句时,采用PreParedStetment对象将大大提高数据库的运行效率,因避免了大量的重复编译。

此外,使用PreParedStetment对象的另一个好处是可以配合使用数据库批量更新机制来提高数据库的运行效率。即通过通过一次调用整批的更新命令来完成对数据库的所有更新。在应用时,利用PreParedStetment对象执行速度由于Statement对象的特点,将PreParedStetment替代Statement对象。

当然,一些基本的操作,如完成对数据库和驱动配置是否支持批量更新的检查也是必须的,可利用DatabaseMetaData对象中所提供的SupportBatchUPdates()方法。

5.使用Java多线程技术

多线程技术的优势已经无需赘述,但在使用多线程技术时为保证线程间的同步和彼此通信和协调,因此同步机制显得尤为重要。

在Java中已经提供了几类可供直接使用的方法来实现线程间的同步。在划分临界资源时可借助synchronized这一关键字来对语句块进行标示,其他Object类中的方法(如wait(),notify()等)以及Tread类中的方法(sleep()、suspend()等)也能够被直接用来处理不同线程的启用或中断操作。采用多线程技术来提高数据库的访问效率时关键问题并不在于技术本身,而是对线程的有效管理,这取决于程序设计者的控制能力。

6.结语

在编程语言既定的情况下,充分利用其优势来提高对数据库的访问效率是处理大型数据库问题是的必由之路。本文中所列举的方法其实对不同的数据库都可以借鉴。要提高访问数据库的效率,除了采用可高访问效率的程序理念外,更多的还是依赖程序员的实际能力,因这些方法多数情况下只能提供程序方向和设计理念模型。

提醒:《Java访问SQL数据库的优化探讨》最后刷新时间 2024-03-14 01:05:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Java访问SQL数据库的优化探讨》该内容的真实性请自行鉴别。