Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


18.3.5.2 MySQL Cluster のインターコネクトとパフォーマンス

ndbd プロセスには、MySQL Cluster 内のデータへのアクセスに使用するいくつかの簡単な構造があります。弊社は、非常に簡単なベンチマークを作成して、各パフォーマンスと、さまざまなインターコネクトがパフォーマンスに与える影響をチェックしました。

4 つのアクセス方法があります。

  • 主キーアクセス  これは、主キーを介したレコードへのアクセスです。もっとも簡単なケースでは、一度に 1 つのレコードだけにアクセスします。これにより、多数の TCP/IP メッセージを設定するためのコスト全体とコンテキストスイッチのための多くのコストが、この単一の要求によって発生します。1 つのバッチで複数の主キーアクセスを送信するケースでは、必要な TCP/IP メッセージとコンテキストスイッチの設定コストがこのアクセスによって共有されます。TCP/IP メッセージの宛先が異なる場合は、追加の TCP/IP メッセージを設定する必要があります。

  • 一意キーアクセス  一意キーアクセスは主キーアクセスとほぼ同じですが、一意キーアクセスはインデックステーブルの読み取りとして実行され、そのあとでテーブルに対する主キーアクセスが実行されます。ただし、MySQL Server からは 1 つの要求だけが送信され、インデックステーブルの読み取りは ndbd によって処理されます。このような要求でも、バッチ化のメリットが得られます。

  • フルテーブルスキャン  テーブルにルックアップ用のインデックスが存在しない場合は、フルテーブルスキャンが実行されます。これは ndbd プロセスに単一の要求として送信されます。その後、このプロセスはテーブルスキャンをクラスタすべての ndbd プロセスで実行される一連の並列スキャンに分割します。MySQL Cluster の今後のバージョンでは、SQL ノードがこのスキャンの一部をフィルタできるようになります。

  • 順序付けされたインデックスを使用する範囲スキャン  順序付けされたインデックスを使用すると、フルテーブルスキャンと同じ方法でスキャンが実行されますが、MySQL サーバー (SQL ノード) によって送信されたクエリーの使用範囲内のレコードのみがスキャンされます。バインドされたインデックス属性にパーティション化キー内のすべての属性が含まれる場合は、すべてのパーティションが並列でスキャンされます。

簡単なバッチ化された主キーおよび一意キーアクセスのテストで MySQL が内部で開発したベンチマークを実施したところ、通信のパフォーマンスが問題にならないまれなケースを除き、SCI ソケットの使用によってパフォーマンスが TCP/IP に比べておよそ 100% 向上することがわかりました。これは、スキャンフィルタが処理時間の大部分を占めるときや、主キーアクセスの非常に大きなバッチが実行されたときに起きる可能性があります。その場合は、ndbd プロセス内の CPU 処理がオーバーヘッドのかなり大きな部分を占めています。

SCI ソケットの代わりに SCI トランスポータを使用することは、ndbd プロセス間の通信でのみメリットがあります。また、SCI トランスポータを使用すると ndbd プロセスがスリープ状態にならないため、SCI トランスポータの使用でメリットがあるのは、CPU をこのプロセス専用にできる場合だけです。ndbd プロセスが長期間にわたる実行 (Linux 2.6 ではプロセスを CPU にロックすることで実現可能です) によって優先度を失わない方法でこのプロセスの優先度を設定することも重要になります。このような構成が可能な場合、ndbd プロセスのパフォーマンスは SCI ソケットを使用する場合に比べて 10-70% 向上します。(更新の実行時 (あるいは並列スキャン操作時) は、この数値がより大きくなります。)

ほかにもコンピュータクラスタ用に最適化されたソケット実装がいくつか存在します (Myrinet、ギガビット Ethernet、Infiniband、VIA インタフェースなど)。ただし、現在のところ MySQL Cluster のテストで使用したのは SCI ソケットだけです。通常の TCP/IP を使用して SCI ソケットを MySQL Cluster 用に設定する方法については、セクション18.3.5.1「SCI ソケットを使用する MySQL Cluster の構成」を参照してください。