优化JDBC

一,FetchSize。默认fetchsize是10行,如果查询结果包括100行,应用与数据库之间会有10次网络交互。但是如果FetchSize设置很大,可能会导致OutOfMemoryError
PreparedStatement.setFetchSize(100);
JdbcTemplate.setFetchSize(100);

二,Statement VS PreparedStatement VS CallableStatement
- Statement 用于单次查询,
- PreparedStatement 用于参数化,动态SQL查询。可用于查询多次。当使用多次查询时,性能优于Statement。
- CallableStatement 用于执行存储过程。

三,更新多条数据可以使用batch,仅需两次网络交互,一次用于创建PreparedStatement,一次用于提交数据更新。

四,尽量不要查询数据库元数据。查询元数据很慢,SELECT语句通常需要两次网络交互,一次用于元数据,一次用于查询结果集。

五,不要使用getObject方法,尽量使用getInt,getString等具体方法。getObject方法需要JDBC额外的处理来检测数据类型。

六,使用列索引,而不是列名查询。例如getInt(1), getString(),不要使用getString(‘name’)。因为使用列名查询需要JDBC将列名转化成大写,然后和所有结果集中的列名比较。

七,数据库提交模式。默认为自动提交模式,这种模式下,JDBC会为每次SQL操作,发送一次提交请求给数据库。这就需要一次网络交互,就算执行的是SELECT。如果关闭自动提交,事务执行时间可能会过长,事务会长时间占用数据行的锁,影响其他事务访问这些数据行,从而影响并发性。

八,优化事务隔离界别,优化数据库连接池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值