[前][次][番号順一覧][スレッド一覧]

mysql:15748

From: Tsubasa Tanaka <Tsubasa Tanaka <yoku0825@xxxxxxxxxx>>
Date: Fri, 20 Apr 2012 22:05:07 +0900
Subject: [mysql 15748] Re: 行列変換を行う処理を高速化するには?

はじめまして、田中と申します。

> id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra
> 1    SIMPLE    t@nippod    range    idx1    idx1    26    NULL    111    Using where; Using temporary; Using filesort
Using temporaryはテンポラリテーブルを推奨されているのではなく、
クエリ処理中にメモリ内に収まらなかったので、テンポラリテーブルを作りましたよという事後報告です。

一番はメモリ内にクエリの結果が全て収まることですが、
テンポラリテーブルはまずはメモリ上に作られますので、この段階であればそこまで遅くなりません。
最悪のシナリオはテンポラリテーブルもメモリ内に収まらず、
DISK上にテンポラリテーブルが作られてしまうことです。
ただし、メモリ上で済んだのかDISKまで書いてしまったのかはEXPLAINの結果からだけでは判断できません。

MyISAMテーブルの場合、
read_buffer_size > 結果セットの大きさ の場合にはテンポラリテーブルは使われません。
InnoDBテーブルの場合は明示的なステータスは無かった様な気がしますが、
innodb_buffer_pool_sizeという変数が大きく関連しています。
まずはどちらのテーブルを使っているかで、これらの値を(可能ならば)大きくして下さい。

結果セットの大きさを知る方法は無いので、適当に大きくして下さい。
DB専用のサーバであれば、read_buffer_sizeは全メモリの25%〜50%、
innodb_buffer_pool_sizeは全メモリの80%が目安といわれています。



…が、経験則としては一度MySQLからデータをインポートしてAccess上にテーブルを作ってあげて、
そのテーブルを見に行くクエリにした方がずっと速いと思います。
月に1度の集計であれば、この方法はどうでしょうか?

may your problem is solved!


ts. tanaka//

2012年4月20日17:58 ram <ram@xxxxxxxxxx>:
> 中川様
> 重ね重ねコメント有難うございます。
>
>> お使いのSELECT文のEXPLAINの結果は出せますか?
>
> EXPLAINは使ったことが無いのですが、
> SELECT文の先頭にEXPLAINと付けて、リダイレクトで実行した結果、以下のように出ます。
> t@nippod というのが実テーブル名で、
> idx1というのが今張ってあるインデックスです。
>
> id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra
> 1    SIMPLE    t@nippod    range    idx1    idx1    26    NULL    111    Using where; Using temporary; Using filesort
>
> idx1は WHERE句の中に含まれている列とソートの順である sycd, npdt, nm です。
>
> この Using temporary が気になりますが、CREATE TEMPORARY TABLEで、
> テンポラリテーブルを使ったほうが処理が効率的という意味なんですね?
>
>>後、
>>read_buffer_size
>>read_rnd_buffer_size
>>sort_buffer_size
>>はそれぞれどんな値を設定されていますか?
>
> read_buffer_size    65536
> read_rnd_buffer_size    262144
> sort_buffer_size    262144
>
> で、デフォルトから変更していません。
>
> ------------------------------------------
> 初穂 太郎
>
>
> (2012/04/20 15:24), 中川 貴 wrote:
>> (2012/04/20 13:58), ram wrote:
>>> 中川様 コメント有難うございました。
>>>
>>> このインデックスは設定済みですが、ほとんど効果がありませんでした。
>>> 情報がお伝え足りなくて申し訳ないです。
>>>
>>> もう一度、外してから、その前後でパフォーマンス比較をしましたが、
>>> 平均応答時間は、ほとんど変わっていませんでした。
>>>
>>> また、先に件数を絞り込んだほうがよいかと思い、サブクエリーで抽出した後に、
>>> GROUP BYを行ってもみましたが、これも、ほとんど変わらず、どちらかというと、
>>> わずかにパフォーマンスが落ちました。
>>>
>>> SELECT x.nm,
>>> sum(case when x.dd = '01' then 1 else 0 end) as 'h101',
>>> sum(case when x.dd = '02' then 1 else 0 end) as 'h102',
>>> (中略)
>>> sum(case when x.dd = '31' then 1 else 0 end) as 'h131'
>>> FROM (SELECT nm,Mid(CAST(npdt AS CHAR),7,2) as dd
>>> FROM nippo
>>> WHERE sycd = #ck_sycd# and npdate>= #from_ymd# and npdate<  #to_ymd# ) as x
>>> GROUP BY x.nm ORDER BY x.nm
>> お使いのSELECT文のEXPLAINの結果は出せますか?
>>
>> 後、
>> read_buffer_size
>> read_rnd_buffer_size
>> sort_buffer_size
>> はそれぞれどんな値を設定されていますか?
>>
>> ****************************************
>> コープ情報システム株式会社
>> 運用事業部
>> コーププラザサービスデスクグループ
>> 中川 貴
>> 175-0094
>> 東京都渋谷区渋谷3-29-8 コーププラザ5F
>> TEL 03-5778-8010
>> E-MAIL takashi.nakagawa@xxxxxxxxxx
>> ****************************************
>>
>>
>>
>
>

[前][次][番号順一覧][スレッド一覧]

     15742 2012-04-20 09:36 [ram <ram@xxxxxxxxxx>] 行列変換を行う処理を高速化するには?    
     15743 2012-04-20 11:12 ┣[中川 貴 <takashi.nak]                                       
     15744 2012-04-20 13:58 ┃┗[ram <ram@xxxxxxxxxx>]                                     
     15745 2012-04-20 15:24 ┃ ┗[中川 貴 <takashi.nak]                                   
     15747 2012-04-20 17:58 ┃  ┗[ram <ram@xxxxxxxxxx>]                                 
->   15748 2012-04-20 22:05 ┃   ┣[Tsubasa Tanaka <yoku]                               
     15749 2012-04-21 01:06 ┃   ┃┗[Tsubasa Tanaka <yoku]                             
     15750 2012-04-21 02:05 ┃   ┃ ┗[Tsubasa Tanaka <yoku]                           
     15753 2012-04-23 15:39 ┃   ┃  ┗[ram <ram@xxxxxxxxxx>]                         
     15756 2012-04-25 14:54 ┃   ┗[中川 貴 <takashi.nak]                               
     15758 2012-04-25 16:34 ┃    ┗[ram <ram@xxxxxxxxxx>]                             
     15759 2012-04-25 17:09 ┃     ┗[中川 貴 <takashi.nak]                           
     15760 2012-04-25 17:18 ┃      ┗[Tomohiro 'Tomo-p' KA]                         
     15761 2012-04-25 18:25 ┃       ┗[中川 貴 <takashi.nak]                       
     15762 2012-04-25 19:05 ┃        ┗[Tomohiro 'Tomo-p' KA]                     
     15752 2012-04-23 14:17 ┗[<gotou1213@xxxxxxxxx]                                       
     15754 2012-04-23 19:53  ┗[ram <ram@xxxxxxxxxx>]                                     
     15755 2012-04-24 13:50   ┗[<gotou1213@xxxxxxxxx]                                   
     15757 2012-04-25 15:39    ┗[ram <ram@xxxxxxxxxx>]                                 
     15765 2012-04-26 14:12     ┗[<gotou1213@xxxxxxxxx]