それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

PDOでbeginTransaction()

バッチ処理でPostgresql7.1にデータをガシガシINSERTしているのですが。PDOを使ったときに、beginTransaction()を使ったほうが明らかに早い。

なぜなのだろう。


あとでsymfonyのTransactionを試してみよう
http://www.symfony-project.com/askeet/4

symfony はPDOではなく、propel/creoleなのでPDOに理由があるかどうかはっきりするかも。PEARのDB/MDBパッケージは使い方忘れてるからもう無理。

public function save($con = null)
{
  $con = Propel::getConnection();
  try
  {
    $con->begin();
 
    $ret = parent::save($con);
 
    // update interested_users in question table
    $question = $this->getQuestion();
    $interested_users = $question->getInterestedUsers();
    $question->setInterestedUsers($interested_users + 1);
    $question->save($con);
 
    $con->commit();
 
    return $ret;
  }
  catch (Exception $e)
  {
    $con->rollback();
    throw $e;
  }
}

そういえば、Propelは1.3系からPDOがデフォルトになったんだっけ。。。
入れてみよう。