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: クエリキャッシュのクリア ( お礼)