id:sh2nd さんに教えて頂いたことをメモ。
JDBCバッチ更新するとOracleだけ3倍速くなってしまうのでやらない ;-)
SH2 on Twitter: "JDBCバッチ更新するとOracleだけ3倍速くなってしまうのでやらない ;-)"
1)MySQLはrewriteBatchedStatements入れないと動かない 2)PostgreSQLはそもそも対応してない です RT @yoheia ほ〜、何でだろ RT @sh2nd: JDBCバッチ更新するとOracleだけ3倍速くなってしまうのでやらない ;-)
SH2 on Twitter: "1)MySQLはrewriteBatchedStatements入れないと動かない 2)PostgreSQLはそもそも対応してない です RT @yoheia ほ~、何でだろ RT @sh2nd: JDBCバッチ更新するとOracleだけ3倍速くなってしまうのでやらない ;-)"
自分の解釈は以下の通り。
- Oracle、MySQL は JDBC ドライバで何件毎に commit するか指定できるが、PostgreSQL は指定できない、つまり、1件毎に commit する。
- Oracle と MySQL の差は JDBC ドライバの差?
commit 回数を減らすとなぜ速くなるか?それはディスクI/O回数が減るから。
追記(2010/02/08):
@yoheia ドライバというよりは各RDBMSのプロトコルの違いですねー Oはプロトコルレベルでサポート、M/Pはプロトコルレベルではバッチ更新できない、MはJDBCドライバで小細工してるので似た効果は得られる、という
SH2 on Twitter: "@yoheia ドライバというよりは各RDBMSのプロトコルの違いですねー Oはプロトコルレベルでサポート、M/Pはプロトコルレベルではバッチ更新できない、MはJDBCドライバで小細工してるので似た効果は得られる、という"
間違って解釈してたみたいw
@yoheia COMMITじゃないですよ、複数行を一度にINSERTする機能です。例えば100行ずつINSERTして10,000行ごとにCOMMITします
SH2 on Twitter: "@yoheia COMMITじゃないですよ、複数行を一度にINSERTする機能です。例えば100行ずつINSERTして10,000行ごとにCOMMITします"
まだ、誤解があった。。。