ablog

不器用で落着きのない技術者のメモ

Oracle、MySQL、PostgreSQL の JDBC Driver

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倍速くなってしまうのでやらない ;-)"

自分の解釈は以下の通り。

  • OracleMySQLJDBC ドライバで何件毎に commit するか指定できるが、PostgreSQL は指定できない、つまり、1件毎に commit する。
  • OracleMySQL の差は 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します"

まだ、誤解があった。。。