質問: 【データベースのパフォーマンス】1億件近いデータベースに対して分析処理をするのに、個人レベルで最速の処理をしようとすると、どのようなソリューションが適切ですか? 1億件(40GB以上)が入っているテーブルに対して、参照及び更新の処理をしようと考えています。 現状、MySQL5.1+SATA HDD(7200rpm)をRAID0+1で構築+Windows XP+3GB memoryの構成で処理しています。 現状、処理を実行すると、相当遅くなります。インデックスが効かない処理もありますので、莫大な時間が掛かります。 多角的に分析したいので、なるべく短時間に1億件の分析が終わると大変助かります。 個人レベル(コストは30万以下、最大でも50万以下)で、もっとも早く処理ができる方法論をアドバイス頂けると大変助かります。 ちなみに、Windows以外ではLinuxとFreeBSDが使えます。 宜しくお願いします。
回答: ■OS WindowsXPのままであれば実質、ファイルキャッシュの調整くらいしか出来ないので Linux or FreeBSDでMySQLを動作させるのに必要最低限の構成でセットアップする。 32bit よりも 64bitのほうが望ましい。 セキュリティソフトやネットワークも邪魔になるのでスタンドアローンで動作させるのが望ましい。 ■MySQL テーブルは出来るだけ分けたい所。理想はファイルキャッシュに収まるサイズ。 インデックスが効かない処理に合わせられないか、非正規化はどうかなど再考。 エンジンはトランザクション不要であるならばMyISAMを選択。 InnoDBよりもMyISAMのほうがデータ容量を半減できるのでディスクアクセスの面でも有利。 あとはファイルキャッシュやソートキャッシュなどは極力大きく取り、ログは最低限だけ出力。 etc・・・細かくは下記などを参照。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 6 最適化 ■ハードディスク OS用HDD1台 + DB用高速SSD1台 (PCI-Express接続の超高速SSDもあるけど高価なのでSATA接続のSSD) ■CPU、メモリ、ビデオカード Core i7 メモリはトリプルチャネルで詰めるだけ メモリのパフォーマンスを確保したいのでチップセット内臓ビデオではなく別付けとする。 以上、とりあえず費用は最小限。最初の回答として、たたき台としてお使いください。 ※ コメント欄開いていれば、コメント欄に書いたのだけど開いてなかったので回答で失礼。