2013.02.10
epgrecと Mysql ストレージエンジン
HPのマイクロサーバーの新しい方を「ぽちっ」ってしまったので、pt3ベースに録画サーバーを更新してみた。Fedora17で MySQLは 5.5。だけどぜんぜんパフォーマンスが出ない…
地上波の8局で getepg.phpで番組表更新が 20分強! ちょっとこのスピードでは BSや CSの更新とかしたら何分掛かるか予想もできない。前の録画機は同条件で 10分弱。キーワード登録でも録画予約完了に数秒待たされる始末。いくら CPUが E6500 -> Turion II Neo n54Lとは言えあまりにも遅い。別な atom n330でももっと速い。なんでやねん?
と言うことで調べてみた。
自分で queryを書いてMySQLを叩きに行っても実行速度はそれほど大きな差はない。PHPの実行速度はそれなりに落ちるがそれでもこんなに差が出るほどとは思えない。分けがわからん状態になったので queryのログを取ってみた…
あはは、こらしんどいわ。MySQL 5.5から InnoDBがデフォルトのストレージエンジンになってるんだけど、番組表の更新やキーワード録画の登録では SELECT文と UPDATE文が乱れ飛んでる。InnoDBはトランザクションのオーバーヘッドがでかいので、これはまずい。根本的に解決するには DBアクセス(DBRecord.class.php)を大幅に改修しないととても無理。しかしこれを改修するとなると、基幹なので影響範囲は∞。もうすでに epgrecではなくなるような。
と言うことで、ストレージエンジンを InnoDB -> MyISAMに変更してみた。
結果、番組表の更新は 20分強 -> 10分弱に激減。キーワード録画の登録も一瞬で
Trackback URL
Comment & Trackback
Comment feed
Comment