人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP+MySQLで下記のような「掲示板サイト」と同等のデータ構造のサイトを作ってます。
説明を分かりやすくするために、「掲示板サイト」にしました。

------
・掲示板サイト(約200カテゴリ)
・1日: 約500件のスレッドが作られる
・1日: 全スレッド合計で約5000件の書き込み(レス)がある

頻繁に取得するデータ

・スレッドタイトルのキーワード検索
・レス内容のキーワード検索

・全スレッド一覧
・全レス一覧
・カテゴリ別のスレッド一覧
・カテゴリ別のレス一覧
・日付別のスレッド一覧
・日付別のレス一覧
・特定のスレッドのレス一覧

------

現状、「category」「thread」「res」で3つのテーブルで、ログを記録しているのですが、
「res」のレコード数が50万件超えたあたりからレスポンスが重くなります。
(一応、インデックスはしてあります。)

これを回避するために、テーブルを分割?パーティショニング?したいのですが
どのように分割(テーブル設計)するのが最適なのでしょうか?

アドバイス下さい。

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

パーティショニングに関してはこのへんで。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080710/310540/
http://blog.livedoor.jp/sasata299/archives/51882315.html
掲示板とかだと、時系列表示で過去のデータの参照が殆ど無いだろうからRANGE使うんじゃないですかね。
ただ、書き込み(INSERT)が重くなってるのならHASHの方がいいのかもしれません。
というか、まずボトルネックを探るのが先じゃないですか?というわけで
http://www.gashimax.com/wiki/index.php?MySQL%2F%A5%C1%A5%E5%A1%BC%A5%CB%A5%F3%A5%B0
http://nippondanji.blogspot.jp/2009/02/mysql.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ