mysql:7116
From: "kosugi" <"kosugi" <kosugi@xxxxxxxxxx>>
Date: Wed, 5 Mar 2003 11:00:32 +0900
Subject: [mysql 07116] Re: MySQL のパフォーマンスチューニング
小杉です > 現在、Apacheのメンバー用サイトのログをMySQLに入れてログ解析を > 行うシステムを構築しております。 > 件数としては43,000ほどあり、これをPHPでUsername,日時 ,Remote_Host,ブラウザ等 > 毎に集計して表にしてWeb上に表示しております。 これだと、PHPで集計しているように読めますが、PHPで集計している なら、MySQLのチューニングは無意味です。 > しかしこの処理時間がやたらに長く、最長で30秒ほどかかることが あります。 > 調べてみたところどうも各項目(Username,日時,Remote_Host,ブラウ ザ等)毎 > の集計で使う"Group By"の処理で時間がかかっているようで、 > Log結果をそのまま出す処理(Group Byは使用せず)に比べて体感で2 倍以上違います。 > 体感ではチューニングできないと思います・・ 集計して遅くなるのは当然かと。 > そこでMySQLのパフォーマンスチューニングを検討しようかと考えて おりますが > どのようにすればいいかアドバイスのほどよろしくお願いいたしま す。 > 私ならログページをキャッシュするようにPHPを書くか、MySQLに集計 データのキャッシュテーブルを定期的に作ります。 どうしてもMySQLを調整するなら、下記を試みます。 MySQLのバージョンが不明なので、アバウトな回答になりますが、数字 的に正当な処理時間以上にパフォーマンスが悪く、マシンのパワーが 十分にあると仮定して、 key_buffer key_buffer_size record_buffer この3つは当たり障りのない部分です。 さらに、順位集計なども含んでいて、本当にGROUP BYに原因が特定で きているなら sort_buffer sort_buffer_size sort_key_blocks をいじります しかし、調整はバックエンドでどういう処理をしているかがわからな いとかえって悪化させることもあります。そして、基本的にはメモリ 消費を増やしてしまうので他のプロセスを圧迫するかもしれません。 アバウトな回答ですし、はずしているかもしれませんが、参考になれ ばと思い、書きました。 ご容赦を。 -- Tomoaki Kosugi kosugi@xxxxxxxxxx
7112 2003-03-04 20:24 [Akinobu YAMAMOTO <ay] MySQL のパフォーマンスチューニング -> 7116 2003-03-05 11:00 ┗["kosugi" <kosugi@xxx]