テーブルをロックせずにテーブル内の大量のデータを変更する場合は、データ管理 (DMS) のロックフリーDML機能を使用できます。 この機能を使用すると、1つの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データベース
ApsaraDB for OceanBaseのMySQLモード
PolarDB for PostgreSQL (Oracleと互換)
データベースインスタンスは、DMSの安定した変更またはセキュリティコラボレーションモードで管理されます。 詳細については、「」をご参照ください。
使用上の注意
ロックフリーDML機能は、単一のテーブルに対する操作と、UPDATEやDELETEなどの単純なSQL文のみをサポートします。
手順
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。表示されるページで、パラメーターを設定し、[送信] をクリックします。 下表にパラメーターを示します。
説明この例では、Security Collaborationモードで管理されているインスタンスが使用されています。 Flexible ManagementまたはStable changeモードで管理されているインスタンスに対してロックフリーの変更チケットを設定する場合は、データベースおよびSQLステートメントの変更パラメーターのみが必要です。
パラメーター
必須
説明
データベース
必須
データ変更を実行するデータベース。 [データベース] ドロップダウンリストからデータベースを選択します。 キーワードを入力してデータベースを検索することもできます。
説明必要なデータベースでデータ変更を実行する権限が必要です。 詳細については、「所有権限の表示」をご参照ください。
実行方法
必須
チケットの実行方法。 有効な値:
チケット提出者は承認時に実行します
承認時に自動的に実行
最後の承認者の実行
変更のSQLステートメント
必須
UPDATE
、DELETE
、INSERT_SELECT
などのDMLステートメントをフィールドに入力します。SQLテキスト
任意
このパラメーターは、変更パラメーターのSQLステートメントをテキストに設定した場合にのみ使用できます。 SQLエディターで実行するSQL文を入力します。
説明複数のSQL文はセミコロン (;) で区切ります。
DMSは、チケットの送信時にSQL文の構文が有効かどうかを確認します。 構文が無効な場合、チケットを起票することはできません。
添付ファイル
任意
このパラメーターは、変更パラメーターのSQLステートメントを [添付] に設定した場合にのみ使用できます。 データ変更のために実行されたSQL文を含む添付ファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、またはSQLファイルです。 ファイルのサイズは15 MBを超えることはできません。
ロールバックのSQLステートメント
任意
データ変更をロールバックするために実行できるSQL文。
SQLテキスト
任意
このパラメーターは、ロールバック用SQLステートメントパラメーターをテキストに設定した場合にのみ使用できます。 データ変更をロールバックするために実行できるSQL文を入力します。
添付ファイル
任意
このパラメーターは、ロールバックのSQLステートメントパラメーターを [添付] に設定した場合にのみ使用できます。 [ファイルのアップロード] をクリックして、ロールバック用に実行されたSQL文を含む添付ファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、またはSQLファイルです。 ファイルのサイズは15 MBを超えることはできません。
利害関係者の変更
任意
データ変更に関与する利害関係者。 指定されたすべての利害関係者は、チケットの詳細を表示し、承認プロセスに参加できます。 DMS管理者とデータベース管理者 (DBA) を除く無関係なユーザーは、チケットの詳細にアクセスできません。
添付ファイル
任意
データ変更に関する追加情報を提供するために、チケットの添付ファイルとして使用されるファイル。
[送信] をクリックします。 チケットの送信後、マスター /スレーブ遅延チェックを有効にし、しきい値を指定し、SQL文を変更できます。
オプション。 マスター /スレーブ遅延チェックを有効にし、しきい値を指定します。 これにより、プライマリ /セカンダリの切り替えが、プライマリデータベースとセカンダリデータベース間の同期における高レイテンシの影響を受けないようにします。
チケット詳細パネルの [基本情報] セクションで、[チャンクオプション] をクリックします。 [チャンクオプション] ダイアログで、master-slave遅延しきい値 (秒) パラメーターに適切な値を設定します。 プライマリデータベースとセカンダリデータベース間の同期のレイテンシがしきい値を超えると、DMSはSQLの実行を中断します。
説明ApsaraDB RDS for MySQLデータベースのみがマスター /スレーブ遅延チェック機能をサポートしています。
オプション。 SQL文を変更します。
チケットを送信すると、DMSは自動的にSQL文を事前チェックします。 事前チェックが失敗した場合は、事前チェックステップで [SQL文の変更] をクリックしてSQL文を変更し、再試行します。
[承認申請] をクリックします。 セキュリティコラボレーションモードで管理されているインスタンスのチケットは、指定された承認ルールに基づいて承認されます。 安定変更モードで管理されているインスタンスのチケットは自動的に承認されます。
チケットが承認されたら、変更の実行で、実行ステップを実行します。
説明承認の進行状況は、チケット詳細パネルの承認ステップで確認できます。
タスクの次の表に示すパラメーターを設定します。
パラメーター
説明
実行戦略
すぐに実行: このオプションを選択すると、[実行の確認] をクリックするとタスクがすぐに実行されます。 デフォルト値です。
スケジュール: このオプションを選択した場合、タスクの開始時間を指定する必要があります。 [実行の確認] をクリックすると、指定した時点でタスクが実行されます。
終了時刻の指定
on: タスクの終了時刻を指定します。 タスクが完了したかどうかに関係なく、指定された終了時刻にタスクを停止します。 これにより、ピーク時にタスクがビジネスに影響を与えるのを防ぎます。
off: これはデフォルト値です。
クリック実行の確認.
説明中断したタスクを再起動できます。
[実行] ステップで、タスクのステータスと詳細を確認できます。 [操作] 列の [スケジューリングログ] をクリックして、タスクのスケジューリングログを表示することもできます。
関連ドキュメント
ロックフリーDML操作を実行した後、次の操作も実行できます。
[SQLコンソール] タブでデータを照会します。 詳細については、「SQLConsoleタブでデータベースを管理する」トピックのクエリデータセクションを参照してください。
SQL結果セットをエクスポートします。 詳細については、「SQL結果セットのエクスポート」をご参照ください。
次のAPI操作は、ロックフリーの変更チケットに関連しています。
よくある質問
Q: ロックフリーDML機能は複雑なSQL文をサポートしていますか?
A: いいえ。 ロックフリーDML機能は、CREATE_INDEXなどの複雑なSQL文や、JOIN操作を含むDELETE文などの複数のテーブルに対する操作をサポートしていません。 サポートされているSQL文の詳細については、「概要」トピックの制限セクションを参照してください。