「データベースをMySqlに移行」(MT導入と改造) | ◇ ◀ ▲ ▶ |
たいして量があるわけではないのに、リビルドがずいぶん遅くなってしまっていた。 全体リビルドをするとなんかのタイムアウトでエラーになるという、 なんだかトホホな状況に陥ってしまっていた。 それに、アクセス記録が予想以上に増加していて、perlだけで統計情報を計算するのには そろそろ限界に来ていたというのもあるので、データベースをBerkeleyDBからDBI::mysqlに 移行することにした。
しかし、サンプルのperlスクリプトでテストしてみるとconnectができない。
どうやらパスワードがあるとだめであることがわかったのでパスワードなし。 これはあんまり気持ちがよくないので、なるべくはやく解決する事にして、次へ。
しかしmt-db2sql.cgiを動かすと「DBIにconnectなんかないよ」といって怒られてしまう。 これにはかなり手間取ったが、どうやらトップレベルのモジュールで「use DBI;」がないために ライブラリーのスコープがMT内部にあるMT::DBIモジュールと混乱してしまっているようである ことがわかった。よってトップレベルのモジュールには件のuseを入れてやることで解決。
これがわかるまでにCPANでDBIを何度インストールしなおしたことか…。
MySqlのマニュアルをみてテーブルごとにデフォルト文字セットをutf8にするとか、 カラムごとにやってみるとかいろいろやったが、どうもうまくいかない。
結局ワークアラウンドとしてMT側のDBIのオブジェクトドライバーのmysqlのやつに、 クラスにドライバーをセットしたときに"SET NAMES 'utf8'"を実行してやることで解決。
気持ちはやくなったのかも知れないという程度かもしれない。 なので、あんまりご利益はないかなぁ…。
次はアクセス記録の部分をMySql対応にする。 現在ページを表示する時間の大部分はここで費やされているので、こっちは効果があるだろう。あるはずだ。
何回かリビルドした感じでは明らかに早くなっている。 エントリーやコメントの単体リビルドだとあまり違いがわからないが、 全体リビルドだと違いは明確だ。 データベースを移行したかいがあった。
今後の改造
「データベースをMySqlに移行」へのコメント コメントを書く
「データベースをMySqlに移行」へのトラックバック