Data Management (DMS) のセキュリティルールにおける SQL レビューの最適化機能は、SQL コンソールまたはデータ変更チケットで実行される SQL ステートメントの標準を強制します。テーブルコメントや必須カラムの欠落などの問題を自動的にチェックし、ロックフリーの変更を推奨するなど、最適化の提案を提供します。これにより、開発品質が向上し、データベース管理者 (DBA) が SQL ステートメントをレビューする際の助けとなります。このトピックでは、SQL レビューのルールを設定し、それをデータ変更チケットに適用する方法について説明します。
背景情報
Data Management (DMS) は、セキュリティルール内にデフォルトの SQL レビューのルールセットを提供しています。例として、テーブルにはコメントが必要です、INSERT ステートメントは NOT NULL カラムに null 値を挿入できません、INSERT ステートメント内でフィールド名を重複させることはできません などがあります。
SQL コンプライアンスチェックと最適化の提案の概要については、「SQL レビューの最適化の設定」をご参照ください。
前提条件
開始する前に、次のステートメントを使用して migration_job テーブルを作成します。
CREATE TABLE `migration_job` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
`gmt_create` datetime NOT NULL COMMENT 'Creation time',
`ref_id` bigint(20) unsigned NOT NULL COMMENT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Test';ご利用のインスタンスがセキュリティコラボレーションコントロールモードを使用している場合、カスタムのセキュリティルールセットを作成し、データベースインスタンスに適用できます。詳細については、「セキュリティルールセットの作成」および「セキュリティルールセットの適用」をご参照ください。
ステップ 1:セキュリティルールの設定
このセクションでは、セキュリティコラボレーションモードで SQL レビューの最適化ルールを設定する方法を示します。柔軟な管理または安定的な変更モードのルールを調整するには、対応するコントロールモードの横にある [SQL レビューの最適化] をクリックします。
DMS 5.0 にログインします。
-
左上隅の
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合は、上部のナビゲーションバーで を選択します。
対象のセキュリティルールセットを見つけ、[操作] 列の [編集] をクリックします。
[詳細] ページの左側のペインで、Sql監査最適化の推奨事項 タブをクリックします。
[テーブルにはプライマリキーが必要です] ルールを見つけ、[操作] 列の [編集] をクリックします。
説明[タグ]、[動作アクション]、または [ステータス] の横にある
アイコンをクリックすると、ルールをすばやくフィルターできます。「タグ」の設定では、DDL ステートメントや DML ステートメントなど、ルールの範囲を指定します。ステータスは、有効または無効にできます。[ルール内容の設定] ダイアログボックスで、パラメーターを設定します。この例では、動作を [改善必須] に設定します。
説明初期のシステムルールには [改善必須] オプションは含まれていません。[動作] オプションの詳細については、「システムの動作」をご参照ください。
[OK] をクリックします。
データ開発、データ変更、SQL レビューなどの機能を使用すると、SQL レビューの最適化機能は、設定されたセキュリティルールに基づいて SQL ステートメントを検証します。
ステップ 2:データ変更の実行
DMS 5.0 にログインします。
DMS コンソールの左上隅にある
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合は、上部のナビゲーションバーで を選択します。
[データ変更チケット申請] ページで、パラメーターを設定し、[申請を送信] をクリックします。
説明パラメーターの説明については、「通常のデータ変更」をご参照ください。
対象のセキュリティルールセットに関連付けられているデータベースインスタンスを選択します。
データ変更用の SQL コードは次のとおりです。
CREATE TABLE test1 ( id bigint COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB; INSERT INTO migration_job(id, ref_id, gmt_create, gmt_create) VALUES(1, null, now(), now());
チケットを送信すると、システムはステップ 1 で設定したセキュリティルールに照らして SQL ステートメントをチェックします。
SQL レビューの最適化機能は、送信されたステートメントを監査します。この例では、監査により 1 件の [改善必須] 項目、2 件の潜在的な問題、1 件の [改善提案] 項目が見つかります。
[詳細を表示] をクリックします。SQL レビューのエラー項目にカーソルを合わせると、具体的な提案が表示されます。
提案に基づいて、[SQL を変更] をクリックし、SQL を最適化してから [変更を確定] をクリックします。
変更内容は次のとおりです。
CREATEステートメントで、test1テーブルにプライマリキーとコメントを追加します。INSERTステートメントで、重複したgmt_createフィールドを削除し、ref_idフィールドに値を挿入します。
変更後の SQL コードは次のとおりです。
CREATE TABLE test1 ( id bigint PRIMARY KEY COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB COMMENT = 'Comment'; INSERT INTO migration_job(id, ref_id, gmt_create) VALUES(1, 2, now());システムは再度事前チェックを実行します。
[承認を依頼] をクリックし、管理者がチケットを承認するのを待ちます。
チケットが承認されると、システムは実行タスクを生成します。
チケットが承認された後、[変更を実行] をクリックします。[タスク設定] ダイアログボックスで、実行パラメーターを設定し、[確認して実行] をクリックします。
説明チケット作成時に [実行方法] を [承認後、自動的に実行] に設定した場合、システムはこのステップを自動的にスキップします。
一時停止したタスクを再開した場合、一時停止した箇所から実行が再開されます。
パラメーター
説明
[実行戦略]
実行戦略を選択します。
[すぐに実行]:[確認して実行] をクリックするとすぐにタスクが開始されます。
[スケジュール実行]:タスクを開始する将来の時刻を指定します。例えば、2024 年 5 月 22 日 00:00 にタスクを実行します。
[グローバルトランザクションを有効化]
グローバルトランザクションを有効にするかどうかを指定します。これはデフォルトで無効になっています。
有効:実行が失敗した場合、すべての変更がロールバックされます。これは DML ステートメントにのみ適用され、DDL ステートメントには適用されません。
無効:SQL ステートメントは 1 つずつ送信されます。ステートメントが失敗した場合、タスクは停止しますが、以前の変更はロールバックされません。
[バックアップを有効化]
実行前にバックアップを作成するかどうかを指定します。このオプションはデフォルトで有効になっています。有効にすると、バックアップファイルからデータを迅速に復元できます。
注
バックアップは UPDATE および DELETE ステートメントでのみサポートされています。
バックアップは MongoDB および Redis ではサポートされていません。
有効:
UPDATEまたはDELETEステートメントを実行する前に、システムは対応するバックアップスクリプトを自動的に生成します。MySQL および MariaDB データベースの場合、
REPLACE INTOバックアップステートメントが生成されます。注
MySQL データベースには、RDS for MySQL、PolarDB for MySQL、PolarDB-X、およびその他の MySQL 互換ソースが含まれます。
MySQL および MariaDB 以外のデータベースエンジンの場合、
INSERTバックアップステートメントが生成されます。
無効:バックアップスクリプトは生成されません。
説明[セキュリティルール] の [SQL 実行制御] モジュールは、SQL タスクの実行をモニターします。これには、データベースロックのタイムアウト、データベースの負荷、実行後のスリープポリシーなどのチェックが含まれます。デフォルト設定を変更するには、「SQL 実行制御の設定」をご参照ください。
チケットが正常に実行された後、[操作] 列の [詳細] をクリックして、実行ステータス、実行回数、影響を受けた行数、実行されたスクリプト、ログ、その他の情報を表示できます。
正常に実行された後、データベースの SQL コンソールに接続して、データ変更が期待どおりに適用されたことを確認することもできます。
その他の操作
チケットが正常に実行された後、[詳細] をクリックして、実行されたステートメント、実行時間、スケジューリング詳細を含む実行ログを表示できます。