声明:这不是教程,只是个小结。不适用于生产环境,仅属于实验性质的设定。
环境:JDK8,Oracle 11g
机器:Lenovo Y50,8G内存,512G硬盘,i5处理器
结论:18个字段,插入100万条数据,耗时20~30s。
Java部分:
1,使用的jar包是ojdbc6.jar
2,关闭自动提交
3,使用Connection.prepareStatement()预编译SQL语句,对于一个批次的数据而言,只需要编译一次即可。
4,对于每一条数据,在将参数设置到PreparedStatement对象之后,使用PreparedStatement.addBatch()方法添加到批次中。
5,每添加1000条数据,执行1次PreparedStatement.executeBatch()方法。
6,全部执行完毕后,手动一次性提交。
代码示例:
public
代码示例:
/** 为经过预编译的ps设置插入语句的参数 */
public boolean insertParameters(PreparedStatement ps) {
if (!checkNotNullKey() || ps == null) {
return false;
}
try {
if (this.myBinaryDouble == null) {
ps.setNull(1, 8);
} else {
ps.setDouble(1, this.myBinaryDouble);
}
// 略......
if (this.myVarchar2 == null) {
ps.setNull(18, 12);
} else {
ps.setString(18, this.myVarchar2);
}
ps.addBatch();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
Oracle部分:
1,使用AWR和ADDM报告分析SQL执行情况。
@?/RDBMS/ADMIN/awrrpt.sql
@?/RDBMS/ADMIN/addmrpt.sql
注:当找不到生成的报告时,可以在设置报告名称时显示指定路径,如'E:/awrrpt_20200503.html'
2,为SGA和PGA设置合适的参数。
show parameter sga;
alter system set sga_max_size=512M scope=spfile;
alter system set sga_target=512M scope=spfile;
show parameter sga;
alter system set pga_aggregate_target=1G;
alter system set workarea_size_policy=auto;
3,重做日志文件。
--3-1,查询当前重做日志信息,包括大小、有多少组、和状态
select group#,bytes/1024/1024,status from v$log;
--3-2,查询日志目录
select * from v$logfile;
--3-3,添加2组日志,每组2048M,增加到5组日志
alter database add logfile group 4 'E:SOFTWAREORACLEORADATAORCLRED004.LOG' size 2048M;
alter database add logfile group 5 'E:SOFTWAREORACLEORADATAORCLRED005.LOG' size 2048M;
--3-4,切换日志
alter system switch logfile;
--3-5,删除日志
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
注:遇到无法删除时,手工发一个检查点让DBWR工作
alter system checkpoint;
4,设置LOG BUFFER参数(64M)
ALTER SYSTEM SET LOG_BUFFER=67108864 SCOPE=SPFILE;
5,关闭FEEDBACK
查看:
select x.ksppinm name, y.ksppstvl value, x.ksppdesc describe
from sys.x$ksppi x, sys.x$ksppcv y
where x.inst_id = userenv('instance')
and y.inst_id = userenv('instance')
and x.indx = y.indx
and x.ksppinm like '%optimizer_use_feedback%';
关闭:
alter system set "_optimizer_use_feedback" = false;
数据库刚启动时所能达到的速度:
10000条数据:
![3e122aedfe082ada18ae91f76e8a2ab7.png](https://i-blog.csdnimg.cn/blog_migrate/a0ed6b5930e3c4caf4c601b0c11dad65.png)
100000条数据:
![c0f2b49b67aa51d33d84a1cb5d16ca11.png](https://i-blog.csdnimg.cn/blog_migrate/cb3c103f3c85f7f7b0fafdca05f210df.png)
1000000条数据:
![fade75f4b210b124e0f60c3803bbd778.png](https://i-blog.csdnimg.cn/blog_migrate/e6070fc71f62e063855ea153431a0f68.png)
![c0acc76beeed0b1628dd30227471a777.png](https://i-blog.csdnimg.cn/blog_migrate/2c1ea624a563d1fee4f091be79e0d7f0.png)
![21784bf4229d53e86e14d56043781554.png](https://i-blog.csdnimg.cn/blog_migrate/7538d41f4f37f1e13693628d064c9d13.png)