MySQL Cluster NDB 7.4 では、MySQL Cluster に対して次の改善が行われました。
-
競合検出および解決の拡張 例外テーブルのメタカラムに対して予約されたカラム名名前空間
NDB$
が採用され、メインテーブルのカラムの任意のサブセットが元のテーブルの主キーの一部でなくても、それらを記録できるようになりました。例外テーブルのカラムとの一致が名前と型だけで行われるようになったため、元の主キーを完全に記録する必要がなくなりました。メインテーブルの主キーの一部ではないカラムの値を例外テーブルに記録することも可能になりました。
読み取りの競合検出が可能になりました。競合するトランザクションによって読み取られたすべての行がフラグ付けされ、例外テーブルに記録されます。同じトランザクションに挿入された行は、読み取りまたは記録の対象となる行に含まれません。この読み取り追跡は、スレーブが事前に
ndb_log_exclusive_reads
を設定する必要がある排他的な読み取りロックを持っているかどうかに依存します。詳細と例については、読み取り競合の検出と解決を参照してください。既存の例外テーブルも引き続きサポートされます。詳細は、セクション18.6.11「MySQL Cluster レプリケーションの競合解決」を参照してください。
-
循環 (「アクティブ-アクティブ」) レプリケーションでのロール管理 MySQL Cluster の循環 (「アクティブ-アクティブ」) レプリケーショントポロジを使用する場合は、
ndb_slave_conflict_role
サーバーシステム変数を使用して、プライマリまたはセカンダリのいずれかのロールを特定の MySQL Cluster に割り当てることができます。この変数には、PRIMARY
、SECONDARY
、PASS
、NULL
のいずれかの値を指定できます。デフォルトはNULL
です。これは、プライマリとして機能する MySQL Cluster からフェイルオーバーするときに使用できます。競合解決機能の効果が無視されるパススルー状態 (
PASS
) もサポートされます。詳細は、ndb_slave_conflict_role
変数の説明およびセクション18.6.11「MySQL Cluster レプリケーションの競合解決」を参照してください。 フラグメント単位のメモリー使用状況レポート メモリー使用状況に関するデータを、MySQL Cluster NDB 7.4.1 の
ndbinfo
情報データベースに追加されたmemory_per_fragment
ビューから個々の MySQL Cluster フラグメント単位で取得できるようになりました。詳細は、セクション18.5.10.17「ndbinfo memory_per_fragment テーブル」を参照してください。-
ノードの再起動の改善
MySQL Cluster NDB 7.4 には、データノードの再起動にかかる時間を短縮する多数の改善が含まれています。次のリストで、これらについて説明します。
ノードの起動時に割り当てられるメモリーは割り当てられるまで使用できないため、オペレーティングシステムは必要な実際の物理メモリーを確保します。MySQL Cluster の以前のバージョンでは、割り当てられたメモリーの各ページにアクセスするプロセスはシングルスレッド化されていたため、比較的時間がかかっていました。このプロセスがマルチスレッドで実装し直されました。16 個のスレッドによるテストでは、シングルスレッドの場合より約 3 倍速いアクセス時間が観測されました。
ローカルチェックポイントの並列化が強化され、MySQL Cluster NDB 7.4 では LCP でサポートされるフラグメント数が以前の 2 から 32 に増加しました。これにより、使用されなかった CPU パワーの利用率が大幅に向上し、LCP が最大 10 倍高速化されます。この高速化によってノードの再起動時間も大幅に短縮されます。
-
新しい
ndbinfo
テーブルであるdisk_write_speed_base
、disk_write_speed_aggregate
、およびdisk_write_speed_aggregate_node
によってディスク書き込みのレポートが提供されます。これらのテーブルは、使用中の各 LDM スレッドのディスク書き込み速度に関する情報を提供します。このリリースでは、現在のノードまたは別のノードが現在再起動されているとき、あるいは現在再起動されているノードがないときの LCP およびバックアップの書き込み速度を制御するため、
MinDiskWriteSpeed
、MaxDiskWriteSpeed
、MaxDiskWriteSpeedOtherNodeRestart
、およびMaxDiskWriteSpeedOwnRestart
データノード構成パラメータも追加されています。これらの変更の目的は、
DiskCheckpointSpeed
およびDiskCheckpointSpeedInRestart
構成パラメータを使ったディスク書き込みの構成の代替となることです。これら 2 つのパラメータは現在非推奨になっており、今後の MySQL Cluster リリースで削除される予定です。 パフォーマンスにとって重要であることが判明したポイントで検出された遅延シグナルを通常の (遅延しない) シグナルに置換することで、バックアップから MySQL Cluster をリストアする時間が短縮されます。これらの不要な遅延シグナルを除去または置換することで、MySQL Cluster のバックアップやバックアップからの MySQL Cluster のリストアにかかる時間が大幅に短縮されるはずです。
NDB
の受信スレッドに関連する複数の内部メソッドが最適化され、NDB
による SQL 処理の効率が向上しました。受信スレッドは、場合によっては 1 秒間に数百万件の受信レコードを処理する必要があるため、MySQL Cluster のデータノードからレコードを取得するときに不要な作業を実行したり、リソースを浪費したりしないようにすることが重要です。
MySQL Cluster の起動フェーズのレポートが改善され、起動中の出力回数が増加しました。セクション18.5.1「MySQL Cluster の起動フェーズのサマリー」を参照してください。