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

mysql:5109

From: 太田 龍太郎 <太田 龍太郎 <ryutaro.ota@xxxxxxxxxx>>
Date: Wed, 06 Feb 2002 15:36:30 +0900
Subject: [mysql 05109] Re: クエリキャッシュのクリア

お世話になっています。
回答ありがとうございます。


> >  データベースのフラグメンテーションは、DELTE、INSERTを繰り返して作ろう
> > と考えています。ある程度大きな行数をDELTEによって消せば、空き領域に新た
> > なデータがINERTされるときに、フラグメンテーションが出来るのではないかと
> > 予想しています。
> 
> 可変長レコードサイズのテーブルじゃないとフラグメンテーションは発生しない
> と思います。myisamchk の Blocks/Record を確認すればわかるのかな…。


 工場などの消費電力を測定するシステムで、計測データ(1分間隔で収集、2年
程度を想定)をMySQLに格納しています。
 その結果、一つのテーブルが数GB程度になりますので、パフォーマンスが低下
しないようにしたい思っています。インデックスはありますが、もし各レコード
が分散した場所に保存されていれば、データのクエリ時に時間がロスするかと懸
念しています。(遅くなったという実測値はないですので、あくまで予想です。)

 ここで、「フラグメンテーション」という言葉は、1つの論理単位(ファイル、
レコード)の書き込まれる場所が分散してしまうという現象に使っています。
 分散して書き込まれている場合、その1つの論理単位を読む場合に、それぞれ
の分散した場所を探して読み込む結果、アクセス速度が低下するのではないかと
思います。

 2種類のフラグメンテーションがあると予想されます。(予想です)

 (1)MyISAMファイルは論理的には1つのファイルだが、ハードディスク上のデー
タの物理的な位置が分割/分散されている状態 (OSが管理する部分であるファ
イルシステム上にファイルが書き込まれるときのフラグメンテーション)

 (2)MyISAMファイルの中にレコードが順番に並んでいない状態(インデックス
から見れば、順番に並んでいるデータだが、実際の各レコードは分散した位置に
配置されている)


(1)は、ディレクトリごと他の場所にコピーし、新たな場所にコピーし直すこと
により、フラグメンテーションは無くなると考えられます。

(2)は、OSから見れば1つのファイルであり、その中身のデータの問題なので、解
決できないと思います。


> 可変長レコードサイズのテーブルじゃないとフラグメンテーションは発生しない
> と思います。myisamchk の Blocks/Record を確認すればわかるのかな…。

 1レコードのサイズは固定長です。
 各レコードの書かれる位置が分散する状態は起こると思います。
 これは、DBでは当然の事だと思います。ですが、どの程度のパフォーマンス低
下になるかということを調査したいと思っています。



> >  FLUSH構文、RESET構文を使用すればいいのかと思いますが、マニュアルを見て
> > も、RESET文が上手く働きません。
> >  コマンドを投げているユーザーにはRELOAD権限があります。
> 
> この書き方じゃ、何をどう実行して、その結果どのようになったために「上手く
> 働かない」と判断したのか良くわかりませんが、FLUSH TABLES 文の実行ではダ
> メですか?

 すみませんでした。せっかくメーリングリストで答えていただける人がいらっ
しゃるのに、こちらのたずね方が不親切で、申し訳ありませんでした。

FLUSH TABLES
と入力すれば、コマンドは通ります。


RESET QUERY CACHE;

と入力すると、文法エラーになりました。

ERROR 1064: You have an error in your SQL syntax near 'QUERY CACHE'
at line 1

その他、以下は全てだめでした。マニュアルを見ても、正しい入力方法が分かり
ませんでした。


mysql> RESET QUERY CACHE;
mysql> RESET QUERY CACHE @tab;
mysql> RESET QUERY CACHE @ tab;
mysql> RESET QUERY CACHE @ MST_ALARM;
mysql> RESET QUERY CACHE at MST_ALARM;
mysql> RESET QUERY CACHE from MST_ALARM;
mysql> FLUSH QUERY CACHE
mysql> FLUSH QUERY CACHE @MST_ALARM;
mysql> FLUSH QUERY CACHE @ MST_ALARM;
mysql> FLUSH QUERY CACHE at MST_ALARM;
mysql> FLUSH QUERY CACHE from MST_ALARM;
mysql> FLUSH RESET QUERY CACHE from MST_ALARM;
mysql> FLUSH RESET QUERY CACHE;


RESET文の正しい構文を教えていただけないでしょうか?

 ご教授、お願いいたします。



===--------------------===--------------------===

            太田 龍太郎 ( Ryutaro Ota )

東芝ITコントロールシステム(株)
    〒183-0057 東京都府中市晴見町 2-24-1
        Tel : 042-333-6886
        Fax : 042-368-8971
社会システム事業部
  システムインテグレーション第4担当 [SI](SI4)
e-mail : ryutaro.ota@xxxxxxxxxx
URL : http://www.toshiba-itc.com/

===--------------------===--------------------===


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

      5090 2002-02-05 09:25 [太田 龍太郎 <ryutaro] クエリキャッシュのクリア                
      5100 2002-02-06 02:11 ┗[とみたまさひろ <tomm]                                       
->    5109 2002-02-06 15:36  ┗[太田 龍太郎 <ryutaro]                                     
      5111 2002-02-06 17:21   ┗[とみたまさひろ <tomm]                                   
      5131 2002-02-09 10:40    ┗[太田 龍太郎 <ryutaro] Re: クエリキャッシュのクリア ( お礼)