2009年3月10日

[mysql 14766] Re: MySQLクラスタの性能についての質問

ご返信ありがとうございます。
いただいたメールのご意見を参考にしたいと思います。

度々の質問で申し訳ないのですが、以下の質問を
追加させてください。
質問は以下の4点となります。

(1)MySQL Clusterを構成する複数のマシンについてCPUなどのスペックの低いマシンがあった場合、他のマシンに影響を及ぼすのでしょうか。


(2)複数のノードに対してクライアントからクエリを送信したとき、1体のマシンにテーブルデータが集中するのでしょうか。
データノードのデータは各ノードに分散しているという認識なので1台のデータノードに集中することはないのかと思っています。

(3)レプリケーションを使用せず、データノードのどれか1台がダウンした場合、それまでのテーブルデータは消去されずに
残っているのでしょうか。

(4)MySQLクラスタではメモリをかなり消費する場合があるかと思いますが、使用するメモリを増やす方法などはあるのでしょうか。

以上、度々の質問で申し訳ありませんが、ご教授お願いいたします。
2009/03/10 10:55 Mikiya Okuno <Mikiya.Okuno@xxxxx>:

> おはようございます。
>
> MySQL Clusterの性能がデータノードの追加によってスケールするかどうかは
> 処理の内容やシステム構成に因ります。
>
> まず言えるのは、MySQL Clusterは主キーの内容によってデータを格納する
> ノードを分けているので、主キーによる参照や1行だけの更新はとても高速であり、
> ノードの台数を増やすことによってスケールするということです。
>
> そうでない場合は注意が必要です。特に範囲検索やインデックスを利用しないスキャンでは
> インターコネクトがボトルネックになって一定以上スケールしない可能性があります。
>
> MySQL Clusterでは、SQLノードがトランザクションを開始すると、
> 一つのデータノードをTC(トランザクション・コーディネータ)として選択し、
> そのトランザクションが終了するまで同じTCを経由してリクエストを送信します。
> 主キーによる参照や更新の場合でも、一回のトランザクション内で連続して
> 何度も処理を行うような場合には、TC上にデータが存在しない場合があり、
> その場合はデータノード間で通信する必要があるので上記と同じく
> インターコネクトがボトルネックになる可能性があります。
>
> この問題は、JOINやサブクエリにおいて顕著になります。ただしMySQL 6.0からは
> BKAという最適化手法が追加されるので、これらのボトルネックは多少マシになるでしょう。
> (MySQL 6.0 + NDB 6.xという組み合わせという意味です。)
>
> 上記のような場合、インターコネクトのボトルネックを解消すればスケールします。
> 多数のノードを接続しないといけない場合には、SCIや10GbEなど高速な
> インターコネクトを使いましょう。
>
> インメモリ型ではなくディスクテーブルを利用する場合、データノードが増える
> ことによるメリットが大きいです。ディスクはメモリやネットワークよりずっと
> 低速であるため、ディスクへの更新や参照がノード間に分散すれば、処理性能が
> 上がる可能性があります。
>
> まとめると、次のような場合に性能が上がりやすいことになります。
> ・細かい処理が大量に発生する。
> ・クエリで主キーを指定している。
> ・高速なインターコネクトを利用している。
> ・ディスクテーブルを利用している。
>
> 次のような場合にはスケールしない可能性があります。
> ・複雑なクエリを処理する。
> ×JOIN、サブクエリ
> ×一度に大量に更新するトランザクション
> ・範囲検索など、主キー(ハッシュ)を利用しないクエリが多い。
> ・インターコネクトが遅い。
>
> ただし、スケールしないと言っても十分実用に耐えるレベルですので、
> Active/Activeで使いたい場合や、手軽にHA化したい場合にはMySQL Clusterは便利です。
>
> というわけで、システムにかけられる予算やアプリケーションの特性をよく考慮して
> 利用する場合を見極めましょう。
> --
> Mikiya Okuno, MySQL Support Engineer
> Sun Microsystems KK, Tokyo, Japan
> http://www-jp.mysql.com/
>
> On 10/03/2009, at 10:22 AM, Hiroyuki Ogawa wrote:
>
> > いつもお世話になっております。
> > 現在、MySQLクラスタの性能について調べています。
> > まず、調査としては複数のPCを用意してそれぞれのPC1台に
> > 管理ノード、データノード、
> > SQLノードをすべてインストールします。
> > 1台目で構成したとき1秒当たりinsertの処理件数は2台、3台、4台で
> > 構成した場合と比較して、性能は上がるのでしょうか。
> > 各PCのOSはすべてLinux(CentOS5.2)です。
> >
> > selectではPC(Linux)とPC(Windows)を接続してWindows
> > PCで1秒間当たり何件selectできるかを調査しています。
> > このときもPC(Linux)の台数を2台から4台に増やした場合、
> > 性能があがるかを調べています。
> > MySQLクラスタはデータノードなどが増えると性能は
> > あがるのでしょうか。
> > それとも、ある台数に達すると性能は収束するのでしょうか。
> >
> > 分かりにくく長い質問になってしまいましたが、ご教授を
> > お願いいたします。
> >
> > 使用するMySQL Clusterのバージョンは6.3.20を使用します。
> >
> > 以上、よろしくお願いいたします。
>
>
>

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




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