## 使用控制COMMIT(一次提交)
D:\Program Files\test\db_test>java InsertTestPostgresql
<<---本页生成耗时[2875]毫秒(2.875秒)--->>
<<---共插入记录1000条-->>
D:\Program Files\test\db_test>java InsertTestPostgresql
<<---本页生成耗时[149175]毫秒(149.175秒)--->>
<<---共插入记录100000条-->>
## jdbc 3.0.16 一次提交
D:\Program Files\test\db_test>java InsertTestMysql
<<---本页生成耗时[3846]毫秒(3.846秒)--->>
<<---共插入记录1000条-->>
D:\Program Files\test\db_test>java InsertTestMysql
<<---本页生成耗时[98582]毫秒(98.582秒)--->>
<<---共插入记录100000条-->>
原帖由 wolfop 于 2007-3-21 19:27 发表
mysql你用的缺省的myisam表吧?那个玩意是表级别锁定,没有事务支持,当然快了。
不要只考虑速度,直接写文本文件岂不更快。
你用mysql完整的acid的innodb表试试。
8 个 双核 AMD Opteron CPU, 每存储引擎 2GB 缓存
1. solidDB for MySQL Beta 5 (solidDB 存储引擎);
2. MySQL 5.0.27 使用 InnoDB 存储引擎
不同数据量时的事务效能 ,64个连接:
MySQL 5.0.27 InnoDB:
10 万行记录,每秒处理事务 12000 笔
30 万行记录,每秒处理事务 9000 笔
100 万行记录,每秒处理事务 5000 笔
MySQL solidDB:
10 万行记录,每秒处理事务 13000 笔
30 万行记录,每秒处理事务 13500 笔
100 万行记录,每秒处理事务 14200 笔
多核下的事务效能 ,64个连接 100万行记录:
MySQL 5.0.27 InnoDB:
4 核,每秒处理事务 5000 笔
8 核,每秒处理事务 4800 笔
16核,每秒处理事务 5000 笔
MySQL solidDB:
4 核,每秒处理事务 7800 笔
8 核,每秒处理事务 9800 笔
16核,每秒处理事务 14200 笔
Soliddb 引擎支持在线/不间断业务 备份数据。
原帖由 cdcchen 于 2007-3-21 14:02 发表
我打开autovacuum = on了,也是直接使用的IP,双测试了一下MSSQL,速度跟PGSQL差不多
接着又试了一下MySQL,速度还是快啊, 速度差太多了,是不是Java和PHP的原因??
又或是我的PgSQL没有配置好??楼上的能 ...
con=DriverManager.getConnection(host,user,passwd);
con.setAutoCommit(false);
for (int i=1;i<=st;i++){
info = "这条记录是第=";
info = info.concat(java.lang.Integer.toString(i));
str = "insert into test (id,txt) values(?,?);";
PreparedStatement pstmt = con.prepareStatement(str);
pstmt.setInt(1,i);
pstmt.setString(2,info);
pstmt.executeUpdate();
//if(i%3000==0)con.commit();
}
//pstmt.close();
con.commit();
con.close();
con=DriverManager.getConnection(host,user,passwd);
con.setAutoCommit(false);
str = "insert into test (id,txt) values(?,?);";
PreparedStatement pstmt = con.prepareStatement(str);
for (int i=1;i<=st;i++){
info = "这条记录是第=";
info = info.concat(java.lang.Integer.toString(i));
pstmt.setInt(1,i);
pstmt.setString(2,info);
pstmt.executeUpdate();
//if(i%3000==0)con.commit();
}
//pstmt.close();
con.commit();
con.close();
原帖由 cdcchen 于 2007-3-23 15:36 发表
现在我的pgsql的CPU占用率非常大,用top查看,一有连接,postgres线程的CPU使用率立马到40-60%,这是什么原因呀,如果不考虑程序写的烂的话,应该怎么优化一下??
原帖由 perlpg 于 2007-3-23 00:14 发表
其实我不懂java,但对数据库还是懂得一点点的。
天啊!平时就这样写程序的吗?要是测试干脆写成:
con.ExecuteStatement(str);
不就完了嘛,对于批量插入,应该是使用下面的方法才合理吧?
我没有j ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |