[Tep-j-general] Re: データベースの容量が大きくなったら・・・

アーカイブの一覧に戻る

hamada bungu****@leo*****
2006年 1月 17日 (火) 08:41:40 JST


こんにちわ。

On Mon, 16 Jan 2006 11:28:07 +0900
しょうじ <kuriy****@takum*****> wrote:

> どうして遅いんだろう・・・

とりあえず、my.cnfの[mysqld]下に

set-variable = long_query_time=1
set-variable = log-slow-queries=slow.log

とか追記してプロセスを再起動し、スロークエリを抽出する事から始めるのが常
道かと思います。

まずshow variablesで設定値を確認し、show statusで動作状況を確認し、スロー
クエリを特定してexplainで問題のクエリの動作状況を調べ、なにが足りないの
かを調べて足りないものを足す、というのが基本パターン。

そもそも、現状のサーバスペック、特に実メモリの量と、mysqldプロセスに設定
されてるkey_buffer_size、およびtable_cacheの値は幾らなんでしょう?

MySQL4.xなら(他の方からもお話し出てますが)クエリキャッシュを有効にする
手もあります。この辺は過去ログを見てもらえば良いと思うので、繰り返しませ
ん。チューニングのドロ沼に踏み込むのは、もう沢山(^_^;)

> 以前、トップページに複数のランキングを表示していた時に、トップページの表示が
> 遅かったことがありました。

上記記述だけでは『遅い』原因が本当にDBなのか、それともそれ以外に原因があ
るのかを判別出来ませんが、DBが『遅い』原因だとすれば

A. クエリそのものが重い(=スロークエリ)
B. クエリの発行回数が多い

のどちらかが原因なことが多いんじゃないでしょか?

Aが原因だとすれば

A1 プロセス変数(my.cnf)のチューニング
A2 インデックス等データベースのチューニング
A3 データベースサーバの強化

等が主な対策かと思われますが、まずは現状、つまり「どこの何がどうボトルネッ
クになっているのか」を把握するのが先決かと。

はまだ




Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る