質問: mysqlにおける検索速度について はじめまして。 gooと同じweb上における質問&回答システムのようなものを作っております。 サーバ構成は、 cpu:2.4gm memory:1gm os:redhat7.2 wwwサーバ:apache1.3x db:mysql3.23 インターフェースにはphp4.2を使用しております。 テーブル構成は、基本的に、 [質問テーブル] 質問no.(pk) 質問タイトル 質問内容 [回答テーブル] 回答no.(pk) 質問no.(fk) 回答内容 のようにしております。 検索の方法は、 該当件数は、select count(質問no.) from 質問テーブル で取得し、 一覧は、select * from 質問テーブル limit a,b order by 質問日時; のようにlimitを使用して表示する件数だけ取得しています。 現在ダミーデータを使用してテストしています。 同時アクセスのないローカルで単体でテストしています。 1万件をこえるあたりから急に検索のときにつっかかるくらいの遅滞が発生し、 3万件からそれが顕著になり、 30万件では2秒くらいかかります。 これはしょうがないのでしょうか。 「教えてgoo」等はすぐ検索されますが、どのようになっているのでしょうか? 検索の早いmysqlとはいえフリーだからしょうがないのでしょうか。 mysqlはデフォルトの設定のままです。 (mysql使用するメモリ等を多少いじってみたのですがあまり変化がありませんでした) 個人的には、あとは、mysqlの適切なパラメータ設定、テーブル設計あたりだと思っているのですが、経験不足でこれだというものが思いつきません 宜しくお願い致します。
回答: 典型的な lamp プラットフォームですね。 私も素人ですが、まず「okweb/教えて!goo」のような大規模なサイトだと 複数のマシンを並列で走らせているのではないでしょうか。 mysql については「software design」3月号で特集していましたので、 まだお読みでなかったらバックナンバーを取り寄せられることをお勧めします。 それによれば、テーブルタイプが myisam だったら innodb に代えると 多少スピードが改善されるようです。 それから、linux のカーネルも最新安定版に代えた方がよいと思われます。 チューニングについては以下もご覧ください。 http://www.mysql.jp/mysql/tips/tune.html http://www.atmarkit.co.jp/flinux/rensai/mysql11/mysql11a.html