AQLによるJOIN性能の大幅な向上

AQLによるJOIN性能の大幅な向上

MySQL Cluster 7.1までは、JOINするテーブルから評価対象の行を1行ずつSQLノードに取得する仕様となっていたため、JOINの処理性能がなかなか上がりませんでした。次期メジャーバージョンの7.2では、JOINは全てデータノード間に閉じて処理をし、結果だけをSQLノードに返すAdaptive Query Localization(AQL)という仕様に変更しました。

このAQLを実装した結果、10個以上のテーブルをJOINする処理で性能が70倍以上となったベンチマーク結果も出ています。
→参照:70x Faster Joins with AQL in MySQL Cluster 7.2 DMR - ANDREW MORGAN’S MYSQL CLUSTER DATABASE BLOG

MySQL Cluster 7.1まではこのJOIN性能がネックとなり、利用対象となるアプリケーションに大きな制約がありましたが、この改善によってより多くのアプリケーションでの利用が期待できます。サーバ台数を抑えた小規模なクラスタを利用して、高価な共有ディスク不要で、かつActive-Activeのクラスタを極めて安価に構築することもできます。

MySQL Cluster 7.2ではSQLノードをMySQL 5.5ベースに切り替えたことで、最新のInnoDBをMySQL Clusterと組み合わせて利用できるようになり、またMySQLサーバの性能改善ポイントも取り込みました。

ディザスタリカバリのためのソリューション

MySQL Clusterそのものでも、単一障害点が無いため高い信頼性を持っています。MySQL Cluster 7.1ではMySQLサーバのレプリケーション機能を利用して、他のクラスタにデータを転送することができます。データセンターをまたいだ非同期レプリケーションを設定することで、データセンターの被災に備えたディザスタリカバリ構成を構築してさらにシステムの信頼性を高めることができます。

また、MySQL Clusterと通常のMySQLサーバの間でもレプリケーションを設定できるため、高い性能や冗長性を求められるデータをMySQL Clusterで処理し、複数のMySQLサーバに転送して並列で分析処理などを行う構成も可能です。

図2:非同期レプリケーションを活用した構成(クリックで拡大)

MySQLサーバのレプリケーションでは、バイナリログの内容を別のMySQLサーバに転送しています。転送されるバイナリログの内容は、デフォルトではコミットされたトランザクションのSQL文を記録する文ベースですが、変更後のデータを記録する行ベースも選択可能です。MySQL Clusterの場合は行ベースでのレプリケーションのみになります。

MySQL Clusterでは複数のMySQLサーバがSQLノードとして利用されますが、バイナリログ・インジェクションという仕組みによって、データノードでのデータ変更が終了した時点で、他のSQLノードから実行されたSQL文もデータノードからSQLノードのバイナリログにシリアライズされた上で書き込まれます。

MySQL Cluster独自のレプリケーション機能の拡張としては、双方向のレプリケーションを利用した場合のテーブル単位での矛盾点の検知と解消が挙げられます。双方向のレプリケーションでは、非同期で変更内容を転送するため、データ変更処理の順序がそれぞれのサーバで入れ替わってしまう可能性があります。MySQL Cluster 7.1では、テーブルにタイムスタンプに類似する整数型の列を用意し、アプリケーション側で一意にシーケンス番号を生成してテーブル変更時にこの値を格納することで、レプリケーション時に矛盾の有無を検知し、矛盾があればシーケンス番号が大きい方を優先する、または削除処理を優先することで矛盾を解消します。

MySQL Cluster 7.2では、更新処理をまとめたEpochを、IDとメタデータを管理するテーブルに格納してレプリケーション処理時にチェックされるようになるため、アプリケーションのデータを格納するテーブルに矛盾検知用のタイムスタンプ格納列を追加する必要が無くなり、より利用しやすくなります。

非同期でのレプリケーションよりもさらに高いレベルでの信頼性を確保するため、MySQL Cluster 7.2ではデータノードを複数のデータセンターに分散させて配置することで、データセンターをまたいで同期的にデータを書き込むことができるようになり、極めて高い信頼性を持った環境が構築できます。既に海外の通信機器ベンダが先行ユーザとしてオーストラリアのシドニーとメルボルンのデータセンターをつないで運用しています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30