mysql:14766
From: Hiroyuki Ogawa <Hiroyuki Ogawa <eng16danbo@xxxxxxxxxx>>
Date: Tue, 10 Mar 2009 13:46:31 +0900
Subject: [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@xxxxxxxxxx>: > おはようございます。 > > 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を使用します。 > > > > 以上、よろしくお願いいたします。 > > >
@ 14763 2009-03-10 10:22 [Hiroyuki Ogawa <eng1] MySQLクラスタの性能についての質問 14764 2009-03-10 10:35 ┣[Tetsuro IKEDA <te.ik] 14765 2009-03-10 10:55 ┗[Mikiya Okuno <Mikiya] -> @ 14766 2009-03-10 13:46 ┗[Hiroyuki Ogawa <eng1] 14767 2009-03-10 14:00 ┗[Mikiya Okuno <Mikiya] @ 14768 2009-03-10 15:43 ┗[Hiroyuki Ogawa <eng1] 14769 2009-03-10 15:56 ┗[Mikiya Okuno <Mikiya] @ 14770 2009-03-10 18:55 ┗[Hiroyuki Ogawa <eng1] 14771 2009-03-10 22:03 ┗[Mikiya Okuno <Mikiya] @ 14772 2009-03-10 23:14 ┗[Hiroyuki Ogawa <eng1]