2009年7月17日

[mysql 14976] Re: MySQL Clusterのチューニング方法

羽田さん、こんばんは。

何点かポイントだけ述べさせて頂きます。

> SELECT * FROM [table_name] LIMIT 3000,30;

このようなクエリを実行すると、SQLノードは3000行データノードからフェッチして、
そのまま捨ててしまうことになりますので効率がよくありません。LIMIT句では

オフセットを極力利用しないようにしましょう。その代わりWHERE句で条件の絞り込みを
するようにしましょう。

MySQL Clusterでは、ORDER BY句を指定しない限り、行がソートされることはありません。
上記のクエリでは、行の順序とは無関係の結果が返ってくるかも知れません。

また、ネットワークの帯域がボトルネックになるのを防ぐため、* もあまり
利用するべきではありません。カラムを絞り込むことで性能が改善する場合があります。
MySQL Clusterではネットワークがボトルネックになりやすいので注意しましょう。

テーブルがインメモリ型ではなくディスク型の場合、キャッシュサイズが小さいと
時間がかかる場合があります。

JOINは使用していないですよね?

EXPLAINの「type」はALLでしょうか?

> そもそも、この14秒というのがそこそこの処理速度なのかも
> よく分かっていない状況なのです。

非常に遅いと思います。

--
Mikiya Okuno, MySQL Support Engineer
Sun Microsystems KK, Tokyo, Japan
http://www-jp.mysql.com/

On 17/07/2009, at 10:13 PM, Kota Hada wrote:

> はじめまして。羽田と申します。
>
> MLへの投稿が初めてなので、失礼な書き方をしてしまうかも知れませんが、
> 皆さまのお知恵を拝借できればと思います。
>
> MySQL Cluster7.0をインストールしたのですが、
> 約4万レコードのテーブルに対し、SELECT * FROM [table_name] LIMIT 3000,30;
> のように、selectを実行した場合に結果の表示に15秒程度かかってしまいます。
>
> このselectの処理がより早くなるためのチューニング方法を検討しているのですが、
> なかなか良い解決策が見当たりません。
>
> 私の方では、クエリーキャッシュの有効、スレッドキャッシュの変更を行いましたが、
> 当然のことながら、初回のクエリーは遅い結果が出てしまいます。
>
> そもそも、この14秒というのがそこそこの処理速度なのかも
> よく分かっていない状況なのです。
>
> 何か良いチューニング方法等ご存知でしたら、
> ご教授いただければと思います。
>
> 宜しくお願い致します。
>

投稿者 xml-rpc : 2009年7月17日 23:00
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86761
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。