`

JAVA 数据库编程中的性能优化

 
阅读更多
1、 禁止自动提交:
在默认情况下,程序执行的任何sql语句都是自动提交的
向一个表中插入2000条记录,
自动提交所用的时间11666毫秒
禁止自动提交(显示提交)3450毫秒

2、 批处理:
多用批处理,减少操作数据库次数。
(1)、禁止自动提交
setAutoCommit(false);
(2)、准备一个语句对象
PreparedStatementmyPrepStatement=myConnection.prepareStatement(“insertintotest_tab(value)values(?)”;
(3)、将语句添加进批中
addBatch();
(4)、执行这批语句
executeBatch();
(5)、提交执行的语句
myConnection.commit();

Oracle新的改进后的批处理:(JDBC2.0以上支持)
只能对OraclePreparedStatement对象进行处理,其中的sql语句在5-30个是最优化的)
改进的地方是,可以预设批大小,SQL语句就会自动添加进批中。
(1)、禁止提交
(2)、设置批值
myoracleConnection.setDefaultExecuteBatch(10);
(3)、对SQL语句进行批处理
for(intcount=0;count<20;count++){
myOraclePrepStatement.setInt(1,count);
introwsInserted=myOraclePrepStatement.executeUpdate();
}
注:还可以强制执行introwsInserted=myOraclePrepStatement.sendBatch();

3、 行预获取
默认情况下,结果集获取的行数是10,对大多数程序都是合适的,但是,如果要获取的行非常多,那么可以增加获取尺寸以便进一步提高程序性能。
通常采用Oracle行预获取,而不用标用行预获取

标准行预获取
StatementmyStatement=myConnection.CreateStatement();
myStatement.setFetchSize(20);
从数据库取2000条记录
当设为11642毫秒
10 161毫秒
20 91毫秒

Oracle行预获取
OracleStatementmyOracleStatement=(OracleSTatement)myConntion.CreateStatement();
myOracleStatement.setRowPrefetch(20);

当设为11532毫秒
11 140毫秒
21 80毫秒


4、 定义结果集类型及长度
预先定义结果集列的Java类型,可以节省判断结果集类型往返。
当查询发送到数据库时,会有一次往返判断结果集应该使用的Java类型。
((OracleStatement)myStatement).defineColumnType(1,java.sql.Types.INTEGER);

5、 语句缓存
使用缓存的语句,通常可以将准备语句的时间减少一半,同时还要以避免使用结果集时创建新的游标。
两种类型:
隐式语句缓存
前后两次使用的语句字符串完全一样。
显示语缓存
((OracleStatement)myPrepStatement).closeWithKey(“myCachedStatement”);
6、 数据类型定义
定义成与SQL一样的数据类型。
7、 变量名定义规则
变量大小写一至,SQL语句字符串大小写一至。

>>>等值关联
selecta.id,a.title,b.columnid
fromarticleinfoa,articlecolumnb
wherea.id=b.articlei;

>>>外关联
selecta.id,a.title,b.columnid
fromarticleinfoa,articlecolumnb
wherea.id=b.articlei(+)andb.articleidnotnull;

>>>内关联
selecta.id,a.title,b.columnid
fromarticleinfoa,articlecolumnb
whereb.articlei(+)=a.idandb.articleidnotnull;

>>>等值关联
selecta.id,a.title
fromarticleinfoa,articlecolumnb
wherea.id=b.articleid;

>>>IN关联
Selecta.id,a.titlefromarticleinfoa
Wherea.idin(selectarticleidfromarticlecolumnb);

>>>等值关联(40%)
selecta.id,a.title
fromarticleinfoa
whereexists(selectb.articleidfromarticlecolumnb
wherea.id=b.articleid);

>>>创建函数索引
selecta.id,a.title
fromarticleinfo
wheretrunc(entertime)>=sysdate-30;

createindexfun_trunc_entertimeonarticleinfo(trunc(entertime))

>>>显示使用某个索引
select/*+articleinfo(fun_trunc_entertime)*/idfromarticleinfo
wheretrunc(entertime)>=sysdate-30;

>>>Where子句中的条件顺序
范围越小越靠后
selecta.id,b.columnidfromarticleinfoa,articlecolumnb
wherea.id=b.articleid(+)andb.articleidisnotnullandb.columnid>=353454564564576andb.columnid<234345344565676;
• NestedLoops(NL)Join
• Sort-MergeJoin
• HashJoin(notavailablewiththeRBO)
• ClusterJoin

分享到:
评论

相关推荐

    【经典】Java数据库编程 JAVA跟数据库连接源代码

    综上所述,Java数据库编程涵盖的内容广泛,从基础的数据库连接到高级的事务处理和性能优化。掌握这些知识点,对于Java开发者来说至关重要,能够有效地实现与数据库的交互,开发出高效、稳定的数据库应用。通过实践和...

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

    在Java数据库编程中,我们常常会使用到一些设计模式来优化代码结构和提高程序的可维护性。例如,模板方法模式(Template Method)和单例模式(Singleton)。模板方法模式允许我们将固定的算法步骤定义在一个方法中,...

    Java数据库编程宝典

    《Java数据库编程宝典》是一本深入探讨Java与数据库交互技术的专业书籍,旨在帮助开发者熟练掌握在Java环境中进行高效、安全的数据库编程。本书涵盖了从基础到高级的多个层次的知识点,包括JDBC(Java Database ...

    java数据库编程_代码

    Java数据库编程是开发应用程序时不可或缺的一...以上就是Java数据库编程涉及的一些关键概念和技能,通过学习和实践"16_Java 数据库编程_代码"中的示例,初学者可以逐步掌握这些知识点,并提升在实际项目中的应用能力。

    java 数据库编程.pdf

    Java数据库编程中需要采取措施防止SQL注入,比如使用预编译语句和参数化查询。 知识点五:JPA (Java Persistence API) JPA是Java EE的一部分,它提供了一种标准的方法来处理Java应用程序中的对象持久化。JPA允许...

    java 数据库编程宝典.rar

    2. SQL语言:作为与数据库交互的语言,SQL在Java数据库编程中至关重要。书里会教授如何使用SQL进行数据查询、插入、更新和删除,以及更复杂的子查询、联接和视图操作。 3. 数据库连接池:为了提高性能和资源管理,...

    《Java数据库编程实例》完整随书代码

    《Java数据库编程实例》这本书是Java...通过学习和实践这些随书代码,你可以深入了解Java数据库编程的核心概念和技术,为实际项目中的数据库操作打下坚实基础。同时,这也是提升数据库设计、优化和管理能力的重要途径。

    java数据库编程实例(简单的)

    Java数据库编程是软件开发中的重要一环,尤其是在构建动态网页、服务器端应用或者移动应用时。本实例聚焦于使用Java进行SQL操作,非常适合初学者学习。在这个简单的Java数据库编程实例中,你将了解到如何利用Java...

    JAVA数据库编程实例随书源码

    Java数据库编程是软件开发中的重要组成部分,特别是在企业级应用中,数据库管理系统的使用无处不在。这个"JAVA数据库编程实例随书源码"提供了一系列的示例代码,可以帮助学习者深入理解如何在Java环境中与数据库进行...

    Java数据库应用程序编程指南随书源码

    总的来说,《Java数据库应用程序编程指南》的随书源码是一份宝贵的教育资源,它将理论知识与实践相结合,帮助读者掌握Java数据库编程的核心技能。无论你是Java新手还是经验丰富的开发者,都可以从中受益匪浅,提升...

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

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

    S2使用Java实现数据库编程

    在IT行业中,数据库编程是至关重要的技能之一,尤其是在Java开发领域。本教程将重点讨论如何使用Java语言来实现对MySQL数据库的编程操作。通过提供的压缩包"使用Java实现数据库编程-1488176910082",我们可以深入...

    JAVA数据库编程实例随书源码Java实用源码整理learns

    通过"Java实用源码整理learns"中的示例,你可以学习到如何在实际项目中应用这些技术,从而提升你的Java数据库编程技能。同时,提供的"下载及使用说明.txt"和"更多Java资料学习.url"可能包含进一步的学习资源和指南,...

    java数据库编程宝典代码

    《Java数据库编程宝典代码》是一本专注于Java数据库编程实践的资源集合,旨在帮助开发者深入理解和掌握如何在Java环境中与各种数据库进行交互。这个压缩包包含了大量的源代码示例,覆盖了从基础到高级的数据库操作,...

    S2北大青鸟 使用Java实现数据库编程(包含项目).zip

    在本压缩包“S2北大青鸟 使用Java实现数据库编程(包含项目).zip”中,主要涵盖的是S2学期的学习内容,重点在于讲解如何使用Java语言进行数据库编程。...在实践中不断探索和优化,才能真正成为熟练的Java数据库程序员。

    Java 数据库编程宝典 pdg(超星阅读器)版

    总的来说,《Java 数据库编程宝典》全面覆盖了从数据库基础到Java数据库编程的各个环节,是Java开发者必备的参考资料。通过学习和实践书中的内容,你将能够熟练地构建和维护数据库驱动的Java应用程序,为你的职业...

    Java 数据库编程宝典

    《Java数据库编程宝典》是一本深入探讨Java与数据库交互技术的专业书籍,旨在帮助开发者熟练掌握在Java环境中进行高效、安全的数据操作。本书涵盖了从基础的JDBC(Java Database Connectivity)到高级的ORM(Object-...

Global site tag (gtag.js) - Google Analytics