主なバグ修正
- NdbScanOperationエラーは、おそらくクライアントが他の処理を行っている間に、クライアントに非同期で返されます。NdbTransaction::execute()への呼び出しの成功は、スキャンリクエストがアセンブルされ、エラーなしでトランザクションコーディネーターに送信されたことのみを保証します。データノードから返されるCONFまたはREF信号を待機しません。この特定のケースでは、予期されたTAB_SCANREFシグナルが、おそらくクライアントがまだ他の操作を実行している間に、非同期的にクライアント空間に返されました。
TAB_SCANREFエラーが受信された時にNdbTransactionエラーコードを設定しないことで、この動作をより確定的にします。 (バグ #34348706) - キーごとの複数の処理中の操作を伴うバッチ処理、IgnoreErrorの使用、非プライマリレプリカで発生する一時的なエラーの組み合わせにより、場合によってはDBTUP内で不整合が発生し、レプリカの不整合やその他の問題が発生しました。非プライマリレプリカで操作が失敗した時を検出し、そのような場合に含まれているトランザクションに対して AbortOnError処理(ロールバック)を強制することで、これが発生するのを防ぎます。 (バグ #34013385)
- 変更率が高い場合、イベントサブスクライバーが受信を確認するのが遅い場合、または、その両方の場合、SUMAブロックがイベントをバッファするためのスペースを使い果たす可能性がありました。 (バグ #30467140)
- ALTER TABLE ... COMMENT="NDB_TABLE=READ_BACKUP=1" または ALTER TABLE..COMMENT="NDB_TABLE=READ_BACKUP=0"は、テーブルに対して非コピー(オンライン)ALTER操作を実行して、そのREAD_BACKUPプロパティを追加または削除します。これは、テーブルの全てのインデックスのインデックスバージョンをインクリメントします。以前のインデックスバージョンを使用して保存された既存の統計は孤立し、削除されることはありませんでした。これにより、インデックス統計を収集する際にメモリが浪費され、検索が非効率的になりました。
インデックスサンプルをクリーンアップすることで、これらの問題に対処します。サンプルバージョンが現在のサンプルバージョンより大きいまたは小さいサンプルは全て削除されます。さらに、既存の統計がインデックスのIDとバージョンによって見つからない場合、およびインデックスが削除された場合。この最後のケースでは、削除操作の境界を緩和し、インデックスのIDとインデックスのバージョンの両方ではなく、問題のインデックス IDに対応する全てのエントリを削除します。
この修正により、大量のインデックス統計データを格納するサンプルテーブルがクリーンアップされます。実際の統計ではなくインデックスメタデータで構成されるヘッドテーブルには、孤立した行がまだ含まれていますが、これらはわずかな量のメモリを占有するため、統計の検索効率に悪影響を与えることはなく、古いエントリはインデックスのIDとバージョンが再利用される時にクリーンアップされます。
(バグ #29611297)
全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL NDB Cluster 7.5.28 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/news-7-5-28.html
MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。