質問: MySQLで1億レコード保持するテーブルの横断検索について。 現在2000万PV/Dayのサイトを運営しておりますが、 いつの間にかレコード数が1億に達するテーブルが存在していることが発覚しました。 さすがにこの件数ともなるとクエリが重くなり、サービスの稼働にも大きく影響しております。 そこで皆様のお知恵をお借りしたいのですが、 1億またはそれ以上のレコード数を保持するテーブルについて データを複数台サーバに分散化させた場合の ”一元的な横断検索を実用レベルで可能とするアイデア” をお教え頂けますでしょうか。 現在の環境は以下の通りです。 OS:CentOS5.5 アプリ:PHP5.2.6 ディスク:INTEL SSDSA2CW120G3 メモリ:16GB MySQLのバージョン:5.0.88と、5.0.67+tritonn.1.0.12(全文検索) よろしくおねがいいたします。
回答: >MySQLレベルで分散化 結論は難しい。 データの特性や検索パターンを利用して アプリケーションからのアプローチも必要な場合が多い。 レコードを半分のテーブル作成して2テーブル。 1テーブル目でヒットすれば、今までの半分の時間 2テーブル目でヒットすれば、今迄通りの時間 こういう風な感じの原理を利用するとか。 mixiとかもその手の方法論を導入してたと思いますよ。 >データを複数台サーバに分散化させた場合 これ、更新があるのかどうかとか更新の頻度にもよります。 ・よく検索されるパターンの結果を保持しておく ・更新系と参照系の2つもつとか 基本的に、ベタで泥臭い方法しかないと思う。