2009年8月28日金曜日

Doctrineが死ぬほど遅い

SymfonyとDoctrineで構成されたWebアプリのチューニングのお仕事。

データベースに登録されている10000件程度のレコードをCSVに出力するのに、なぜか30秒もかかる。コンソールのSQLiteコマンドで検索すれば1秒もかからずに結果が返ってくるので、Webアプリ側に問題があると推測してDQL(DoctrineのSQL)をいじってみるも、どうやってもパフォーマンスが上がらない。

問題を切り分けるため、Doctrineをやめて別のDBアクセス方法を試してみようと、PHPのPDOを使ってみたら、処理が1秒未満で終了! 自分の目を疑った。

使っているDoctrineのバージョンは0.4.2。どうやらDoctrineの2.0でパフォーマンスが上がっているようだが、Doctrineをアップデートするのは怖い。

結局、極端に遅い部分だけPDOを利用する、という方法でWebアプリのパフォーマンスを上げることにした。しかし、PDOの30倍も遅い、というのはひどい。新規案件でDoctrineを使う気がなくなった。

0 件のコメント:

コメントを投稿