- 浏览: 1049122 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (538)
- 奇文共赏 (36)
- spring (13)
- hibernate (10)
- AOP/Aspectj (9)
- spring security (7)
- lucence (5)
- compass (3)
- jbmp (2)
- jboss rule(drools) (0)
- birt (1)
- jasper (1)
- cxf (3)
- flex (98)
- webgis (6)
- 设计模式 (1)
- 代码重构 (2)
- log4j (1)
- tomcat (9)
- 神品音乐 (1)
- 工作计划 (2)
- appfuse (1)
- svn (4)
- 寻章摘句 (3)
- eclipse (10)
- arcgis api for flex (1)
- 算法 (5)
- opengis-cs (1)
- bug心得 (13)
- 图标 (1)
- software&key (14)
- java (17)
- 搞笑视频 (13)
- sqlserver (9)
- postgresql (1)
- postgis (0)
- geoserver (5)
- 日子 (50)
- 水晶报表 (1)
- 绝对电影 (3)
- Alternativa3D (1)
- 酷站大全 (10)
- c++ (5)
- oracle (17)
- oracle spatial (25)
- flashbuilder4 (3)
- TweenLite (1)
- DailyBuild (6)
- 华山论贱 (5)
- 系统性能 (5)
- 经典古文 (6)
- SOA/SCA/OSGI (6)
- jira (2)
- Hadoop生态圈(hadoop/hbase/pig/hive/zookeeper) (37)
- 风水 (1)
- linux操作基础 (17)
- 经济 (4)
- 茶 (3)
- JUnit (1)
- C# dotNet (1)
- netbeans (1)
- Java2D (1)
- QT4 (1)
- google Test/Mock/AutoTest (3)
- maven (1)
- 3d/OSG (1)
- Eclipse RCP (3)
- CUDA (1)
- Access control (0)
- http://linux.chinaunix.net/techdoc/beginner/2008/01/29/977725.shtml (1)
- redis (1)
最新评论
-
dove19900520:
朋友,你确定你的标题跟文章内容对应???
tomcat控制浏览器不缓存 -
wussrc:
我只想说牛逼,就我接触过的那点云计算的东西,仔细想想还真是这么 ...
别样解释云计算,太TM天才跨界了 -
hw_imxy:
endpoint="/Hello/messagebr ...
flex+java代码分两个工程 -
gaohejie:
rsrsdgrfdh坎坎坷坷
Flex 与 Spring 集成 -
李涤尘:
谢谢。不过说得有点太罗嗦了。
Oracle数据库数据的导入及导出(转)
jdbc程序的性能主要由两个因素决定,一是数据库本身的性质,另一个是与数据库相对独立的jdbc应用程序接口(api)的使用。这里说的是如何正确使用jdbc编程接口,以获得更好的性能。
jdbc主要优化有:
1.选择正确的jdbc驱动程序
2.Connention的优化:使用连接池来管理Connection对象
3.Statement的优化:使用批量更新等
4.Result的优化:正确的从数据库中get数据等
(1)选择正确的jdbc驱动程序:
1、jdbc-odbc 桥
2、本地api-部分 java驱动
3、jdbc网路协议-纯java驱动
4、jdbc本地协议
最好选择jdbc网路协议-纯java驱动,效率比较高,但需要第三方软件的支持。比如corba、 weblogic属于这种类型
(2)优化Connection对象:
1、设置适当的参数
DriverManager.getConnection(String url,Properties props);
例如:
Properties props=new Properties();
props.put("user","wuwei");
props.put("password","wuwei");
props.put("defaultRowPrefectch","30");
props.put("dufaultBatchValue","5");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
对象可以通过设置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 两个参数类优化连接
2、使用连接池
可以自己写一个连接池,这样程序的灵活性强,便于移植。
apache项目开发了一套非常通用而表现非常稳定的对象池 http://jakarta.apache.org/commons/pool.htm
设计了自己的连接池后,在客户端调用建立对象:
public Object makeObject() throws Exception{
Class.forName("oracle.jdbc.driver.OracalDriver");
return DriverManager.getConnection("url","username","password");
}
销毁对象时用:
public void destroyObject(Object obj) throws Exception{
((Connection)obj.close());
}
注意几点:对象池里有没有回收机制,对象池里有机有容量限制,对象池里有多少个闲置对象(可以释放)
3、控制事务的提交
最好手动提交事务,不但可以可以保证数据原子性,而且对新能提高留下余地。
try{
connection.setAutoCommint(false);
// 代码用PreparedStatement性能比Statementh好
connection.commit();
connection.setAutoCommit(true);
}catch(SQLException e){
}finally{
//代码
if(connection!=null){
connection.close();
}
}
4、适当的选择事务的隔离级别
TRANSACTION_READ_UNCOMMITED 性能最高
TRANSACTION_READ_COMMITED 快
TRANSACTION_REFEATABLE_READ 中等
RANSACTION_SERIALIZABLE 慢
(3)Statement 优化:
jdbc3个接口用来处理sql的执行,是Statement PreparedStatement CallableStatement提供适当的Statement接口批量执行sql从数据库批量获取数据。
PreparedStatement 比Statement性能要好 主要体现在一个sql语句多次重复执行的情况。
PreparedStatemnt只编译解析一次而Statement每次编译一次。
批量修改数据库
Statement 提供方法addBatch(String)和executeBatch()
调用方法为
stmt.addBatch("isnert.....");
stmt.addBatch("update.....");
stmt.executeBatch();
也可以用PreparedStatement从而更好的提高性能:
pstmt=conn.preparedStatement("insert into test_table(......) values(....?)");
pstmt.setString(1,"aaa");
pstmt.addBatch();
pstmt.setString(1,"bbb");
pstmt.addBatch();
.....
pstmt.executeBatch();
批量地从数据库中取数据:
通过setFetchSize()和getFectchSize()方法来设定和查看这个参数,这个参数对体统的性能影响比较大。这个参数太小会严重地降低程序的性能。
Connection Statement ResultSet都有这个参数,他们对性能地影响顺序是:ResultSet---Statement---Connection
(4)优化ResultSet:
体现在以下几个方面:
批量读取数据.合理设置ResultSet的getFetchSize()和setFetchSize()方法中的参数
使用正确的get和set方法
使用整数而不是字段名作为参数性能比较高
例如:
setInt(1,100);
setString(2,"aaaa");
比
setInt("id","100");
setString("name","aaaa");
性能好
设置适当的滚动方向。有3个方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN,单向滚动性能比较高。
其他方面的性能优化
及时显示的关闭Connection Statement ResultSet,其中Connection可以用Connetion Pool处理。
使用数据库系统的强大查询功能去组织数据。这样程序运行是和数据库服务的交互次数少,数据库返回给程序的记录条数少的多,所以性能有很大的提高。
jdbc主要优化有:
1.选择正确的jdbc驱动程序
2.Connention的优化:使用连接池来管理Connection对象
3.Statement的优化:使用批量更新等
4.Result的优化:正确的从数据库中get数据等
(1)选择正确的jdbc驱动程序:
1、jdbc-odbc 桥
2、本地api-部分 java驱动
3、jdbc网路协议-纯java驱动
4、jdbc本地协议
最好选择jdbc网路协议-纯java驱动,效率比较高,但需要第三方软件的支持。比如corba、 weblogic属于这种类型
(2)优化Connection对象:
1、设置适当的参数
DriverManager.getConnection(String url,Properties props);
例如:
Properties props=new Properties();
props.put("user","wuwei");
props.put("password","wuwei");
props.put("defaultRowPrefectch","30");
props.put("dufaultBatchValue","5");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
对象可以通过设置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 两个参数类优化连接
2、使用连接池
可以自己写一个连接池,这样程序的灵活性强,便于移植。
apache项目开发了一套非常通用而表现非常稳定的对象池 http://jakarta.apache.org/commons/pool.htm
设计了自己的连接池后,在客户端调用建立对象:
public Object makeObject() throws Exception{
Class.forName("oracle.jdbc.driver.OracalDriver");
return DriverManager.getConnection("url","username","password");
}
销毁对象时用:
public void destroyObject(Object obj) throws Exception{
((Connection)obj.close());
}
注意几点:对象池里有没有回收机制,对象池里有机有容量限制,对象池里有多少个闲置对象(可以释放)
3、控制事务的提交
最好手动提交事务,不但可以可以保证数据原子性,而且对新能提高留下余地。
try{
connection.setAutoCommint(false);
// 代码用PreparedStatement性能比Statementh好
connection.commit();
connection.setAutoCommit(true);
}catch(SQLException e){
}finally{
//代码
if(connection!=null){
connection.close();
}
}
4、适当的选择事务的隔离级别
TRANSACTION_READ_UNCOMMITED 性能最高
TRANSACTION_READ_COMMITED 快
TRANSACTION_REFEATABLE_READ 中等
RANSACTION_SERIALIZABLE 慢
(3)Statement 优化:
jdbc3个接口用来处理sql的执行,是Statement PreparedStatement CallableStatement提供适当的Statement接口批量执行sql从数据库批量获取数据。
PreparedStatement 比Statement性能要好 主要体现在一个sql语句多次重复执行的情况。
PreparedStatemnt只编译解析一次而Statement每次编译一次。
批量修改数据库
Statement 提供方法addBatch(String)和executeBatch()
调用方法为
stmt.addBatch("isnert.....");
stmt.addBatch("update.....");
stmt.executeBatch();
也可以用PreparedStatement从而更好的提高性能:
pstmt=conn.preparedStatement("insert into test_table(......) values(....?)");
pstmt.setString(1,"aaa");
pstmt.addBatch();
pstmt.setString(1,"bbb");
pstmt.addBatch();
.....
pstmt.executeBatch();
批量地从数据库中取数据:
通过setFetchSize()和getFectchSize()方法来设定和查看这个参数,这个参数对体统的性能影响比较大。这个参数太小会严重地降低程序的性能。
Connection Statement ResultSet都有这个参数,他们对性能地影响顺序是:ResultSet---Statement---Connection
(4)优化ResultSet:
体现在以下几个方面:
批量读取数据.合理设置ResultSet的getFetchSize()和setFetchSize()方法中的参数
使用正确的get和set方法
使用整数而不是字段名作为参数性能比较高
例如:
setInt(1,100);
setString(2,"aaaa");
比
setInt("id","100");
setString("name","aaaa");
性能好
设置适当的滚动方向。有3个方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN,单向滚动性能比较高。
其他方面的性能优化
及时显示的关闭Connection Statement ResultSet,其中Connection可以用Connetion Pool处理。
使用数据库系统的强大查询功能去组织数据。这样程序运行是和数据库服务的交互次数少,数据库返回给程序的记录条数少的多,所以性能有很大的提高。
发表评论
-
Java中Object类的wait()和notify()方法怎么使用
2013-02-12 18:28 1645http://wenwen.soso.com/z/q1292 ... -
PropertyEditor
2011-09-23 15:08 1088http://read.pudn.com/downloads3 ... -
一个完整的TableViewer实例
2011-09-23 15:04 2247http://tieba.baidu.com/f?kz=168 ... -
JSON与JAVA的数据转换
2011-09-19 17:27 1095http://developer.51cto.com/art/ ... -
String,StringBuffer与StringBuilder的区别??
2010-07-13 09:51 1066http://blog.csdn.net/rmn190/a ... -
获取java线程中信息的两种方法
2010-06-13 11:08 1216http://www.cn-java.com/www1/?ac ... -
Java:模拟Eclipes的控制台
2010-06-09 10:17 1263http://www.cppblog.com/biao/arc ... -
The Final Performance Testing Example
2009-11-05 10:47 915http://www.artima.com/weblogs/v ... -
看JTS源码,感受Java优化编程
2009-09-21 14:30 2545看JTS源码,感受Java优化编程 http://www.bl ... -
发布FetionAPI 中国移动飞信免费发短信API接口
2009-04-19 10:30 2070http://www.cnbeta.com/articles/ ... -
jolt书籍下载大全
2009-03-09 14:43 1483第19届(2009)Annual Jolt Product E ... -
Java代码优化,策略与方法
2009-02-05 15:05 1260http://looxiaohu.iteye.com/blog ... -
『Java代码优化』 尽可能地使用stack(栈)变量(方法内部的局部变量)
2009-02-05 15:04 1092http://looxiaohu.iteye.com/blog ... -
各种数据库的JDBC驱动下载及连接字符串URL写法
2009-01-07 16:19 4028各种数据库的JDBC驱动下载及连接字符串URL写法 sun官 ... -
dos下各种常见命令索引
2008-11-19 17:19 1079http://www.huo119.com/study/dos ... -
java保留小数
2008-08-28 17:21 1610http://www.bincn.com/index.php? ...
相关推荐
### JDBC性能优化详解 #### 一、引言 在当今数据密集型的应用环境中,Java数据库连接(JDBC)作为Java应用程序与数据库之间的重要桥梁,其性能优化显得尤为重要。本文将根据“JDBC性能优化.pdf”文件提供的信息,...
本文将详细介绍三个主要的JDBC性能优化技巧,并提供了一些通用的准则,以帮助开发者提高JDBC应用程序的运行效率。 首先,正确使用数据库MetaData方法是关键。MetaData方法通常用于获取数据库表、列、索引等元数据...
标题中的“优化JDBC性能的三大技巧”是指在开发基于Java的JDBC应用程序时,为了提升性能而采取的关键策略。这些技巧主要集中在正确使用数据库MetaData方法、只获取必要的数据以及选择最佳性能的功能,并且有效管理...
JDBC性能优化 - 使用PreparedStatement代替Statement,减少SQL解析时间。 - 使用批处理处理大量插入或更新操作。 - 合理设置JDBC连接池大小,避免频繁创建和销毁连接。 - 使用Statement的`setFetchSize()`方法控制...
在IT行业中,数据库连接管理是应用系统性能优化的关键环节之一,而JDBC连接池就是解决这一问题的有效工具。本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database ...
JDBC性能优化** - 使用PreparedStatement而非Statement,避免SQL注入并提高效率。 - 执行批处理操作,一次性提交多个SQL语句。 - 使用连接池管理数据库连接,避免频繁创建和销毁连接。 - 设置合适的事务隔离级别,...
然而,在使用Spark与数据库交互时,尤其是使用JDBC(Java Database Connectivity)读取数据时,如果不优化并发度,很容易造成性能瓶颈。特别是在面对大规模数据集时,单线程任务过重会导致任务执行缓慢甚至挂起,...
3. **JDBC性能优化** - 使用PreparedStatement:预编译的SQL可以提高执行效率,避免SQL注入攻击。 - 批量处理:通过`addBatch()`和`executeBatch()`方法,可以一次性提交多条SQL语句,提高效率。 - 数据库连接池...
6. **JDBC性能优化**: - 使用PreparedStatement替代Statement,提高SQL执行效率,避免SQL注入问题。 - 分批处理批量插入或更新,减少网络通信次数。 - 使用连接池管理数据库连接,避免频繁创建和销毁连接。 - ...
6. **JDBC性能优化**: - 使用连接池管理数据库连接,可以提高性能并减少资源消耗。 - 对于大数据量操作,考虑使用批处理(Batch Processing)来提升效率。 - 注意调整SQL语句,避免全表扫描,利用索引提高查询速度...
- 探讨JDBC性能优化策略及最佳实践。 #### 目录概览 - **第1章:JDBC基础** - JDBC简介 - 安装配置指南 - 第一个JDBC程序 - 连接数据库 - 执行SQL语句 - **第2章:JDBC核心API** - DriverManager类详解 - ...
六、JDBC性能优化 1. 使用PreparedStatement而非Statement,因为PreparedStatement可以被缓存,减少解析和编译的时间。 2. 执行批处理操作,减少网络往返次数。 3. 使用连接池管理数据库连接,避免频繁创建和关闭...
4. **JDBC性能优化**: - 使用PreparedStatement代替Statement,可以防止SQL注入,并且预编译的SQL语句通常执行更快。 - 使用批处理操作批量执行SQL语句,提高效率。 - 合理设置连接池,避免频繁的数据库连接创建...
10. **JDBC性能优化** 优化JDBC应用包括:减少数据库往返次数(例如,批量处理、联合查询),使用PreparedStatement代替Statement,合理设置连接池参数,以及正确关闭资源等。 总结,JDBC高级教程涵盖了从基础的...
9. **JDBC性能优化** - 使用PreparedStatement替代Statement,减少解析时间。 - 合理设置批处理大小,避免内存溢出。 - 使用连接池,减少连接创建和销毁的开销。 - 及时关闭结果集、语句和连接,释放资源。 10....
总的来说,理解和掌握批量插入技术,无论是使用JDBC还是Mybatis,都能帮助我们优化数据库操作,提升系统性能。对于大型项目,合理利用批量插入策略,结合数据库的性能调优,可以显著提高服务响应速度和用户体验。
10. **JDBC优化**:使用`PreparedStatement`而非`Statement`,批处理操作,设置合适的缓冲大小,以及及时关闭资源都是常见的JDBC性能优化手段。 综上所述,"java-jdbc-end"这个实例可能涵盖了从连接数据库、执行SQL...
JDBC性能优化 - 使用PreparedStatement代替Statement,预编译SQL可以减少解析时间。 - 使用批处理操作,减少网络通信次数。 - 打开和关闭数据库连接应尽可能快,考虑使用连接池(如C3P0、HikariCP)管理连接,避免...
总结来说,iBATIS3提供了更高的开发效率和易用性,而JDBC则在性能优化和灵活性上有优势。选择哪个取决于项目需求,例如,对于快速开发和维护的小型项目,iBATIS3可能是更好的选择;而对于性能要求极高,且需要深度...
6. **JDBC性能优化**: - 使用PreparedStatement代替Statement,以预编译SQL,提高效率并防止SQL注入。 - 使用批处理操作批量执行SQL,减少网络通信次数。 - 及时关闭不再使用的资源,避免内存泄漏。 7. **事务...