すべてのプロダクト
Search
ドキュメントセンター

Data Management:ロックフリー DML 操作

最終更新日:Apr 21, 2026

テーブルをロックせずに大量のテーブルデータを変更する必要がある場合は、Data Management (DMS) のロックレス変更機能を使用できます。この機能は、単一の SQL ステートメントを複数のバッチに分割して実行することで、テーブルをロックせずにテーブルデータを変更し、DML 操作がデータベースのパフォーマンスと領域に与える影響を軽減します。このトピックでは、DMS でロックレスデータ変更を実行する方法について説明します。

前提条件

  • サポートされているデータベースタイプ:

    データベースエンジンサポートされているインスタンス
    MySQLApsaraDB RDS for MySQL、PolarDB for MySQL、MyBase for MySQL、PolarDB for Xscale、サードパーティの MySQL データベース
    PostgreSQLApsaraDB RDS for PostgreSQL、PolarDB for PostgreSQL、MyBase for PostgreSQL、サードパーティの PostgreSQL データベース
    MariaDBApsaraDB for MariaDB、サードパーティの MariaDB データベース
    OceanBaseMySQL モードの ApsaraDB for OceanBase
    Oracle 互換PolarDB for PostgreSQL (Compatible with Oracle)
  • インスタンスは、安定的な変更またはセキュリティコラボレーションのいずれかのコントロールモードである必要があります。詳細については、「コントロールモードの表示」をご参照ください。

制限事項

UPDATE、DELETE、および INSERT...SELECT ステートメントのみがサポートされています。

UPDATE と DELETE

制約詳細
テーブルスコープ単一テーブルのみ
WHERE 句必須です。すべての行を更新または削除するには、WHERE 1=1
サブクエリサポートされていません
LIMIT 句サポートされていません — 手動ページネーションに LIMIT を使用すると、フルテーブルスキャンが強制され、この機能が防止しようとしているテーブルロックが発生します

INSERT...SELECT

制約詳細
SELECT スコープ単一テーブルのみ
WHERE 句SELECT 句で必須です。すべての行を選択するには、WHERE 1=1
許可されていない句LIMITORDER BY、および GROUP BY はサポートされていません

操作手順

  1. DMS 5.0 にログインします。

  2. 上部のナビゲーションバーで、[データベース開発] > [データ変更] > [ロックレス変更] を選択します。

    説明

    DMS コンソールをシンプルモードで使用している場合は、左上隅の function アイコンをクリックします。表示されるナビゲーションウィンドウで、[すべての機能] > [データベース開発] > [データ変更] > [ロックレス変更] を選択します。

  3. ロックレス変更 チケットのパラメーターを設定し、[送信] をクリックします。次の表に、一部のパラメーターを示します。

    説明

    この例は、セキュリティコラボレーションモードのインスタンスの設定を示しています。柔軟な管理または安定的な変更モードのインスタンスの場合、データベースと変更用 SQL ステートメントのパラメーターのみを設定する必要があります。

    パラメーター

    必須

    説明

    [データベース]

    はい

    対象のデータベースを検索して選択します。

    説明

    ターゲットデータベースのデータを変更する権限が必要です。詳細については、「権限の表示」をご参照ください。

    [ビジネスバックグラウンド]

    いいえ

    変更のコンテキストを提供することで、コミュニケーションのオーバーヘッドを削減します。

    [実行メソッド]

    はい

    チケットの実行メソッドを選択します。

    • 承認後にチケット申請者が実行

    • 承認後に自動実行

    • 最終承認者が実行

    説明

    管理者は [O&M] > [設定管理] で実行メソッドのリストを編集できます。詳細については、「設定管理」をご参照ください。

    [影響を受ける行数]

    はい

    影響を受ける行数を推定します。[SQL コンソール]COUNT クエリを実行して、この行数を取得できます。

    説明

    テーブルにデータが継続的に書き込まれる場合は、既存のデータ行数のみをカウントします。

    [変更用 SQL ステートメント]

    はい

    UPDATEDELETEINSERT_SELECT などの DML ステートメントを入力します。

    説明

    DDL ステートメントを入力した場合、DDL ロックフリーのスキーマ変更タスクを実行することになります。詳細については、「ロックフリー変更チケットを使用してロックフリーのスキーマ変更を実行する」をご参照ください。

    [ロールバック用 SQL ステートメント]

    いいえ

    [変更用 SQL ステートメント] の逆のスクリプトです。スクリプトは実行可能である必要があります。

    [SQL テキスト]

    いいえ

    このパラメーターは、[ロールバック SQL] パラメーターで [テキスト] を選択した場合にのみ表示されます。変更 SQL ステートメントの逆の処理となる、ロールバック SQL ステートメントを入力します。

    [添付ファイル]

    いいえ

    このパラメーターは、[ロールバック用 SQL ステートメント] パラメーターで [添付ファイル] を選択した場合にのみ表示されます。[ファイル] をクリックして、ロールバック SQL の添付ファイルをアップロードします。

    説明

    サポートされているファイル形式は .txt、.zip、.sql のみです。ファイルサイズは 15 MB を超えることはできません。

    [変更関係者]

    いいえ

    指定された関係者は、チケットを表示して共同作業を行うことができます。関係者以外 (管理者と DBA を除く) は表示できません。

    [添付ファイル]

    いいえ

    このチケットに関する追加のコンテキストを提供するために、添付ファイルをアップロードします。

  4. チケットを送信した後、プライマリ/セカンダリレイテンシーチェックを有効にし、しきい値を設定し、SQL ステートメントを変更できます。

    • (任意) プライマリ/セカンダリレイテンシーチェックを有効にし、しきい値を設定します。これにより、過剰なプライマリ/セカンダリレイテンシーがインスタンスの切り替えに影響を与えるのを防ぎます。

      [基本情報] セクションで [チャンクオプション] をクリックし、妥当なプライマリ/セカンダリレイテンシーのしきい値を秒単位で設定します。プライマリ/セカンダリレイテンシーがしきい値を超えると、SQL の実行は中断されます。

      説明

      この機能は現在、ApsaraDB RDS for MySQL データベースでのみ利用可能です。

    • (任意) SQL ステートメントを変更します。

      申請を送信すると、システムは自動的に SQL ステートメントを事前チェックします。事前チェックが失敗した場合は、[SQL の編集] をクリックし、失敗の理由に基づいてステートメントを編集してから、リトライできます。

  5. [送信] をクリックします。セキュリティコラボレーションモードのインスタンスのチケットは、設定されたルールに基づいて承認が必要ですが、安定的な変更モードのインスタンスのチケットは自動的に承認されます。

  6. チケットが承認された後、チケット詳細ページの [実行] セクションで [変更を実行] をクリックします。

    説明

    チケット詳細ページの [承認] セクションで承認の進捗状況を確認できます。

  7. タスク実行パラメーターを設定します。

    設定項目

    説明

    実行戦略

    • [すぐに実行]:デフォルトのオプションです。[実行の確認] をクリックすると、タスクはすぐに実行されます。

    • [スケジュール]:タスクの開始時刻を選択します。[実行の確認] をクリックすると、タスクは指定された時刻に実行されます。

    説明

    定期タスクの実際の実行時間には、±1 分の誤差が生じる場合があります。

    [終了時刻の指定]

    タスクの終了時刻を指定します。タスクが指定された終了時刻までに完了しない場合、システムは残りの SQL タスクの実行を停止します。これにより、タスクがピーク時間中に実行され、ビジネス運用に影響を与えるのを防ぎます。

    説明

    タスクの実際の終了時間には、±1 分の誤差が生じる場合があります。

    プライマリ/セカンダリノードのチェック

    このチェックを有効にすると、プライマリインスタンスとスタンバイインスタンス間のリアルタイムデータ同期、高可用性、および障害からの迅速なリカバリが保証されます。

    カナリアリリースタイプ

    SQL ステートメントをバッチで実行するためのポリシーです。

    • [カナリアリリースなし]:DMS はタスク内のすべての SQL ステートメントを自動的に実行します。

    • [最初の SQL ステートメントの実行後に中断]:最初の SQL ステートメントが正常に実行されると、DMS はタスクを自動的に一時停止します。続行するには、[リトライ] をクリックします。残りの SQL ステートメントは、それ以上の一時停止なしで一度に実行されます。

    • [SQL ステートメントの実行後に中断]:各 SQL ステートメントが実行された後、タスクは自動的に一時停止します。次の SQL ステートメントを実行するには、手動で [リトライ] をクリックする必要があります。

  8. [実行の確認] をクリックします。

    説明

    一時停止したタスクを再開すると、最初からやり直します。

    [実行] セクションでは、タスクの実行ステータス、タスク設定、詳細、および [スケジューリングログ] を表示できます。

関連ドキュメント

よくある質問

  • Q:ロックレスデータ変更機能は、複雑な SQL 操作をサポートしていますか?

    A:いいえ。たとえば、CREATE_INDEX や、JOIN を含む DELETE ステートメントなどの複数テーブル操作はサポートしていません。サポートされている SQL タイプについての詳細は、「制限事項」をご参照ください。

  • Q: DMS のロックレス変更は、テーブルロックとブロッキングを検出しますか?

    A: DMS がロックレスデータ変更を実行すると、大きな SQL ステートメントを小さなバッチに分割し、各バッチの後に一時停止します。これにより、リソースを長時間占有することを回避します。実行中、DMS は事前に行ロック検出を実行しません。MySQL は変更された行をロックします。小さなバッチと一時停止のため、全体的な影響は最小限ですが、これによりテーブルがロックされないことを保証するものではありません。ロックフリーのスキーマ変更の場合、DMS は一時テーブルを使用して DDL ステートメントをシミュレートします。これにより、操作がテーブルロックやブロッキングを引き起こすかどうかを事前にチェックします。チェックによって操作がテーブルをロックすると判断された場合、検証は失敗し、メッセージが表示されます。

  • Q:DMS のロックレス変更タスクの増分再生検証は調整できますか?

    A:はい。まず、[O&M] > [設定管理] ページで、「ロックレス変更結果の再生データ検証比率の調整を許可する」機能を検索して有効にします。

    1. コンソールで対応する DDL チケットに移動します。

    2. 実行セクションで、[詳細] をクリックします。

    3. 対応するスクリプトを見つけて、[実行の進行状況] をクリックします。

    4. 検証比率は下部に表示されます。必要に応じて比率を調整します。単位はパーミル (‰) です。