匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

PHP+MySQLで下記のような「掲示板サイト」と同等のデータ構造のサイトを作ってます。

説明を分かりやすくするために、「掲示板サイト」にしました。

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

頻繁に取得するデータ

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

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

------

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

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

アドバイス下さい。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/04/17 23:58:40
  • 終了:2013/04/25 00:00:04

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/04/18 11:45:11

パーティショニングに関してはこのへんで。
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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません