テーブルをロックせずにテーブル内の大量のデータを変更する場合、データ管理 (DMS) のロックフリー DML 機能を使用できます。この機能を使用すると、単一の SQL 文を実行するデータを複数のバッチに分割し、各バッチで SQL 文を実行できます。このようにして、DML 操作がデータベースのパフォーマンスとデータベース領域に及ぼす影響を軽減できます。このトピックでは、DMS でロックフリーの DML 操作を実行する方法について説明します。
前提条件
データベースは、次のいずれかのタイプです。
MySQL: ApsaraDB RDS for MySQL、PolarDB for MySQL、MyBase for MySQL、PolarDB for Xscale、およびサードパーティの MySQL データベース
PostgreSQL: ApsaraDB RDS for PostgreSQL、PolarDB for PostgreSQL、MyBase for PostgreSQL、およびサードパーティの PostgreSQL データベース
MariaDB: ApsaraDB for MariaDB およびサードパーティの MariaDB データベース
MySQL モードの ApsaraDB for OceanBase
PolarDB for PostgreSQL (Oracle 互換)
データベースインスタンスは、DMS で安定的な変更またはセキュリティコラボレーションモードで管理されています。詳細については、「インスタンスの制御モードを表示する」をご参照ください。
使用上の注意
ロックフリー DML 機能は、単一テーブルの操作と、UPDATE や DELETE などの単純な SQL 文のみをサポートします。
手順
- DMS コンソール V5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明シンプルモードで DMS コンソールを使用する場合は、左上隅の
アイコンにポインターを移動し、 を選択します。
表示されたページで、パラメーターを設定し、[送信] をクリックします。次の表にパラメーターを示します。
説明この例では、セキュリティコラボレーションモードで管理されているインスタンスを使用します。柔軟な管理モードまたは安定的な変更モードで管理されているインスタンスのロックフリー変更チケットを設定する場合、必要なパラメーターはデータベースと変更用 SQL 文のみです。
パラメーター
必須
説明
[データベース]
はい
データ変更を実行するデータベース。[データベース] ドロップダウンリストからデータベースを選択します。キーワードを入力してデータベースを検索することもできます。
説明必要なデータベースでデータ変更を実行するための権限が必要です。詳細については、「所有権限を表示する」をご参照ください。
[実行方法]
はい
チケットの実行方法。有効な値:
承認時にチケット送信者が実行
承認時に自動的に実行
最後の承認者が実行
説明DMS 管理者の場合、構成管理」をご参照ください。
モジュールの [構成管理] ページで実行方法を変更できます。詳細については、「[影響を受ける行]
はい
データ変更操作の影響を受ける可能性のあるデータ行の推定数。影響を受ける行の実際の数を取得するには、SQL 文で COUNT 関数を使用し、SQL コンソール タブで SQL 文を実行します。
説明データが継続的に書き込まれる場合は、既存のデータ行の数をカウントします。
[変更用 SQL 文]
はい
フィールドに変更する DML 文 (
UPDATE
、DELETE
、INSERT_SELECT
文など) を入力します。説明DDL 文を入力して、ロックフリーのスキーマ変更を実行することもできます。詳細については、「ロックフリーの DDL 操作を実行する」をご参照ください。
[SQL テキスト]
いいえ
このパラメーターは、[変更用 SQL 文] パラメーターを [テキスト] に設定した場合にのみ使用できます。SQL エディターで実行する SQL 文を入力します。
説明複数の SQL 文はセミコロン (;) で区切ります。
[変更ターゲット] パラメーターを [データソースインスタンス] に設定する場合は、SQL 文のすべてのテーブル名の前に、
${dbName}.${tableName}
形式でデータベース名を追加する必要があります。DMS は、チケットを送信するときに SQL 文の構文が有効かどうかを確認します。構文が無効な場合、チケットを送信できません。
[添付ファイル]
いいえ
このパラメーターは、[変更用 SQL 文] パラメーターを [添付ファイル] に設定した場合にのみ使用できます。データ変更用に実行された SQL 文を含む添付ファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、または SQL ファイルです。ファイルサイズは 15 MB を超えることはできません。
[ロールバック用 SQL 文]
いいえ
データ変更をロールバックするために実行できる SQL 文。
[SQL テキスト]
いいえ
このパラメーターは、[ロールバック用 SQL 文] パラメーターを [テキスト] に設定した場合にのみ使用できます。データ変更をロールバックするために実行できる SQL 文を入力します。
[添付ファイル]
いいえ
このパラメーターは、[ロールバック用 SQL 文] パラメーターを [添付ファイル] に設定した場合にのみ使用できます。[ファイルのアップロード] をクリックして、ロールバック用に実行された SQL 文を含む添付ファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、または SQL ファイルです。ファイルサイズは 15 MB を超えることはできません。
[変更の利害関係者]
いいえ
データ変更に関与する利害関係者。指定されたすべての利害関係者は、チケットの詳細を表示し、承認プロセスに参加できます。DMS 管理者とデータベース管理者 (DBA) を除き、無関係なユーザーはチケットの詳細にアクセスできません。
[添付ファイル]
いいえ
データ変更に関する追加情報を提供するために、チケットの添付ファイルとして使用されるファイル。
[送信] をクリックします。チケットを送信した後、マスタースレーブ遅延チェックを有効にし、しきい値を指定し、SQL 文を変更できます。
オプション。マスタースレーブ遅延チェックを有効にし、しきい値を指定します。これにより、プライマリ/セカンダリスイッチオーバーがプライマリデータベースとセカンダリデータベース間の同期の高レイテンシの影響を受けるのを防ぎます。
チケット詳細パネルの [基本情報] セクションで、[チャンクオプション] をクリックします。[チャンクオプション] ダイアログボックスで、[マスタースレーブ遅延しきい値 (秒)] パラメーターに適切な値を設定します。プライマリデータベースとセカンダリデータベース間の同期のレイテンシがしきい値を超えると、DMS は SQL の実行を一時停止します。
説明ApsaraDB RDS for MySQL データベースのみがマスタースレーブ遅延チェック機能をサポートしています。
オプション。SQL 文を変更します。
チケットを送信した後、DMS は SQL 文の事前チェックを自動的に実行します。事前チェックが失敗した場合は、[事前チェック] ステップの [変更用 SQL 文] をクリックして SQL 文を変更し、再試行します。
[承認のために送信] をクリックします。セキュリティコラボレーションモードで管理されているインスタンスのチケットは、指定された承認ルールに基づいて承認されます。安定的な変更モードで管理されているインスタンスのチケットは自動的に承認されます。
チケットが承認されたら、[実行] ステップの [変更を実行] をクリックします。
説明チケット詳細パネルの [承認] ステップで承認の進捗状況を確認できます。
タスクについて、次の表に示すパラメーターを設定します。
パラメーター
説明
[実行戦略]
[すぐに実行]: これはデフォルト値です。[実行の確認] をクリックすると、タスクはすぐに実行されます。
[スケジュール]: このオプションを選択した場合は、タスクの開始時刻を指定する必要があります。[実行の確認] をクリックすると、タスクは指定された時刻に実行されます。
説明実際の実行時刻は、指定された実行時刻から ± 1 分ずれる場合があります。
[終了時刻の指定]
タスクの終了時刻を指定します。タスクが完了しているかどうかに関係なく、システムは指定された終了時刻にタスクを停止します。これにより、ピーク時にタスクがビジネスに影響を与えるのを防ぎます。
説明実際のタスク終了時刻は、指定された終了時刻から ± 1 分ずれる場合があります。
[プライマリ/セカンダリノードチェック]
この機能を有効にすると、プライマリインスタンスとセカンダリインスタンス間のデータ同期を継続的に維持し、高可用性と迅速なエラー回復を実現できます。
[カナリアリリース種別]
SQL 文を実行するためのポリシー。有効な値:
[カナリアリリースなし]: DMS はタスク内のすべての SQL 文を自動的に実行します。
[最初の SQL 文の実行後に一時停止]: 最初の SQL 文が正常に実行されると、DMS は SQL の実行を自動的に一時停止します。続行する必要がある場合は、[再試行] をクリックします。その後、DMS は一時停止することなく残りの SQL 文をすぐに実行します。
[SQL 文の実行後に一時停止]: DMS は各 SQL 文の実行後に一時停止します。次の SQL 文を実行するには、[再試行] を手動でクリックする必要があります。
[実行の確認] をクリックします。
説明一時停止されたタスクは再起動できます。
[実行] ステップで、タスクのステータスと詳細を表示できます。また、[アクション] 列の [スケジューリングログ] をクリックして、タスクのスケジューリングログを表示することもできます。
参照
ロックフリーの DML 操作を実行した後、次の操作も実行できます。
[SQL コンソール] タブでデータをクエリします。詳細については、「[SQL コンソール] タブでデータベースを管理する」トピックの「データのクエリ」セクションをご参照ください。
データベースのデータをエクスポートします。詳細については、「データベースのエクスポート」をご参照ください。
SQL 結果セットをエクスポートします。詳細については、「SQL 結果セットのエクスポート」をご参照ください。
次の API 操作は、ロックフリー変更チケットに関連しています。
FAQ
Q: ロックフリー DML 機能は複雑な SQL 文をサポートしていますか?
A: いいえ。ロックフリー DML 機能は、CREATE_INDEX
などの複雑な SQL 文や、JOIN 操作を含む DELETE 文などの複数テーブルの操作をサポートしていません。サポートされている SQL 文の詳細については、「概要」トピックの「制限」セクションをご参照ください。