Azure Database for MySQL でのサーバー パラメーター
適用対象: Azure Database for MySQL - 単一サーバー
重要
Azure Database for MySQL シングル サーバーは廃止パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、Azure Database for MySQL シングル サーバーの現状に関するページを参照してください
この記事では、Azure Database for MySQL でサーバー パラメーターを構成するための考慮事項とガイドラインを示します。
サーバー パラメーターとは
MySQL エンジンには、エンジンの動作を構成および調整するために使用する、さまざまなサーバー変数やパラメーターが用意されています。 実行時に動的に設定できるパラメーターもあれば、適用するためにサーバーを再起動する必要がある静的なものもあります。
Azure Database for MySQL には、Azure portal、Azure CLI、PowerShell を使用して、MySQL サーバーのさまざまなパラメーターの値をワークロードのニーズに合わせて変更できる機能が用意されています。
構成可能なサーバー パラメーター
サポートされるサーバー パラメーターの一覧は、拡大を続けています。 Azure portal の [サーバー パラメーター] タブを使用して全一覧を表示し、サーバー パラメーターの値を構成できます。
よく更新されるいくつかのサーバー パラメーターの制限について詳しくは、次のセクションを参照してください。 制限は、サーバーの価格レベルと仮想コアによって決まります。
スレッド プール
MySQL では、従来からすべてのクライアント接続にスレッドが割り当てられます。 同時実行ユーザーの数が増えると、それに応じてパフォーマンスが低下します。 アクティブなスレッドが多いと、コンテキスト切り替えの増加、スレッドの競合、CPU キャッシュの不適切な局所性によって、パフォーマンスが大幅に低下する可能性があります。
サーバー側の機能であり、接続プールとは異なる "スレッド プール" により、ワーカー スレッドの動的プールが導入され、パフォーマンスが最大化されます。 この機能を使用して、サーバーで実行されるアクティブ スレッドの数を制限し、スレッド チャーンを最小化します。 これにより、接続の急増が原因で、サーバーでリソースやメモリが不足するのを防ぐことができます。 スレッド プールは、短いクエリと CPU 集中型のワークロード (OLTP ワークロードなど) に対して最も効率的です。
詳しくは、Azure Database for MySQL でのスレッド プールの導入に関する記事を参照してください。
Note
MySQL 5.6 では、スレッド プールはサポートされていません。
スレッド プールを構成する
スレッド プールを有効にするには、thread_handling
サーバー パラメーターを pool-of-threads
に更新します。 既定では、このパラメーターは one-thread-per-connection
に設定されています。したがって、MySQL で新しい接続ごとに新しいスレッドが作成されます。 これは静的パラメーターであるため、適用するにはサーバーを再起動する必要があります。
次のサーバー パラメーターを設定して、プール内のスレッドの最大数と最小数を構成することもできます。
thread_pool_max_threads
: この値は、プール内のスレッドの数を制限します。thread_pool_min_threads
: この値は、接続が閉じられた後も予約されるスレッドの数を設定します。
スレッド プールでの短いクエリのパフォーマンス問題を改善するために、"バッチ実行" を有効にできます。 クエリの実行直後にスレッドがスレッド プールに戻されるのではなく、この接続での次のクエリを待機するために、スレッドが短い時間アクティブのままとなります。 その後、スレッドによりクエリが迅速に実行されます。これが完了すると、スレッドは次のクエリを待機します。 このプロセスは、全体の所要時間がしきい値を超えるまで継続されます。
次のサーバー パラメーターを使用して、バッチ実行の動作を決定します。
thread_pool_batch_wait_timeout
:この値は、スレッドで別のクエリの処理を待機する時間を指定します。thread_pool_batch_max_time
: この値は、スレッドでクエリ実行のサイクルを繰り返して次のクエリを待機する最大時間を決定します。
重要
スレッド プールのテストが完了するまで、実稼働環境ではスレッド プールは有効にしないでください。
log_bin_trust_function_creators
Azure Database for MySQL では、バイナリ ログが常に有効になっています (log_bin
パラメーターが ON
に設定されています)。 トリガーを使用したい場合、"SUPER 特権を持っておらず、バイナリ ログが有効になっています (より安全度の低い log_bin_trust_function_creators
変数を使用することもできます)" のようなエラーが表示されます。
バイナリ ログ形式は常に行であり、サーバーへのすべての接続では "常に" 行ベースのバイナリ ログが使用されます。 行ベースのバイナリ ログは、セキュリティを維持するのに役立ちます。またバイナリ ログは中断されないため、log_bin_trust_function_creators
を TRUE
に問題なく設定できます。
innodb_buffer_pool_size
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
汎用ストレージ v1 (最大 4 TB をサポート) 上のサーバー
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | 872415232 | 134217728 | 872415232 |
Basic | 2 | 2684354560 | 134217728 | 2684354560 |
General Purpose | 2 | 3758096384 | 134217728 | 3758096384 |
General Purpose | 4 | 8053063680 | 134217728 | 8053063680 |
General Purpose | 8 | 16106127360 | 134217728 | 16106127360 |
General Purpose | 16 | 32749125632 | 134217728 | 32749125632 |
General Purpose | 32 | 66035122176 | 134217728 | 66035122176 |
General Purpose | 64 | 132070244352 | 134217728 | 132070244352 |
メモリ最適化 | 2 | 7516192768 | 134217728 | 7516192768 |
メモリ最適化 | 4 | 16106127360 | 134217728 | 16106127360 |
メモリ最適化 | 8 | 32212254720 | 134217728 | 32212254720 |
メモリ最適化 | 16 | 65498251264 | 134217728 | 65498251264 |
メモリ最適化 | 32 | 132070244352 | 134217728 | 132070244352 |
汎用ストレージ v2 (最大 16 TB をサポート) 上のサーバー
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | 872415232 | 134217728 | 872415232 |
Basic | 2 | 2684354560 | 134217728 | 2684354560 |
General Purpose | 2 | 7516192768 | 134217728 | 7516192768 |
General Purpose | 4 | 16106127360 | 134217728 | 16106127360 |
General Purpose | 8 | 32212254720 | 134217728 | 32212254720 |
General Purpose | 16 | 65498251264 | 134217728 | 65498251264 |
General Purpose | 32 | 132070244352 | 134217728 | 132070244352 |
General Purpose | 64 | 264140488704 | 134217728 | 264140488704 |
メモリ最適化 | 2 | 15032385536 | 134217728 | 15032385536 |
メモリ最適化 | 4 | 32212254720 | 134217728 | 32212254720 |
メモリ最適化 | 8 | 64424509440 | 134217728 | 64424509440 |
メモリ最適化 | 16 | 130996502528 | 134217728 | 130996502528 |
メモリ最適化 | 32 | 264140488704 | 134217728 | 264140488704 |
innodb_file_per_table
MySQL では、テーブルの作成時に指定した構成に基づいて、InnoDB
テーブルが異なるテーブルスペースに保存されます。 システム テーブルスペースは、InnoDB
データ辞書のストレージ領域です。 file-per-table テーブルスペースは、1 つの InnoDB
テーブルのデータとインデックスを含み、ファイル システム内の専用のデータ ファイルに保存されます。
この動作は、innodb_file_per_table
サーバー パラメーターを使用して制御します。 innodb_file_per_table
を OFF
に設定すると、InnoDB
でシステム テーブルスペースにテーブルが作成されます。 それ以外の場合、InnoDB
で file-per-table テーブルスペースにテーブルが作成されます。
Note
innodb_file_per_table
は、汎用ストレージ v2 と汎用ストレージ v1 の General Purpose およびメモリ最適化価格レベルでのみ更新できます。
Azure Database for MySQL では、汎用ストレージ v2 の 1 つのデータ ファイルで、最大 4 TB までサポートされます。 データベースのサイズが 4 TB を超える場合は、innodb_file_per_table テーブルスペースにテーブルを作成する必要があります。 1 つのテーブル サイズが 4 TB を超える場合は、パーティション テーブルを使用する必要があります。
join_buffer_size
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | Basic レベルでは構成できません | 該当なし | 該当なし |
Basic | 2 | Basic レベルでは構成できません | 該当なし | 該当なし |
General Purpose | 2 | 262144 | 128 | 268435455 |
General Purpose | 4 | 262144 | 128 | 536870912 |
General Purpose | 8 | 262144 | 128 | 1073741824 |
General Purpose | 16 | 262144 | 128 | 2147483648 |
General Purpose | 32 | 262144 | 128 | 4294967295 |
General Purpose | 64 | 262144 | 128 | 4294967295 |
メモリ最適化 | 2 | 262144 | 128 | 536870912 |
メモリ最適化 | 4 | 262144 | 128 | 1073741824 |
メモリ最適化 | 8 | 262144 | 128 | 2147483648 |
メモリ最適化 | 16 | 262144 | 128 | 4294967295 |
メモリ最適化 | 32 | 262144 | 128 | 4294967295 |
max_connections
[価格レベル] | 仮想コア数 | 既定値 | 最小値 | 最大値 |
---|---|---|---|---|
Basic | 1 | 50 | 10 | 50 |
Basic | 2 | 100 | 10 | 100 |
General Purpose | 2 | 300 | 10 | 600 |
General Purpose | 4 | 625 | 10 | 1250 |
General Purpose | 8 | 1250 | 10 | 2500 |
General Purpose | 16 | 2500 | 10 | 5000 |
General Purpose | 32 | 5000 | 10 | 10000 |
General Purpose | 64 | 10000 | 10 | 20000 |
メモリ最適化 | 2 | 625 | 10 | 1250 |
メモリ最適化 | 4 | 1250 | 10 | 2500 |
メモリ最適化 | 8 | 2500 | 10 | 5000 |
メモリ最適化 | 16 | 5000 | 10 | 10000 |
メモリ最適化 | 32 | 10000 | 10 | 20000 |
接続数が上限を超えると、エラーが発生することがあります。
ヒント
接続を効率的に管理するために、ProxySQL のような接続プーラーを使用することをお勧めします。 ProxySQL の設定について詳しくは、Azure Database for MySQL での ProxySQL を使用した読み取りレプリカの負荷分散に関するブログ記事を参照してください。 ProxySQL はオープン ソース コミュニティ ツールです。 Microsoft では、ベスト エフォート方式でサポートされています。
max_heap_table_size
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | Basic レベルでは構成できません | 該当なし | 該当なし |
Basic | 2 | Basic レベルでは構成できません | 該当なし | 該当なし |
General Purpose | 2 | 16777216 | 16384 | 268435455 |
General Purpose | 4 | 16777216 | 16384 | 536870912 |
General Purpose | 8 | 16777216 | 16384 | 1073741824 |
General Purpose | 16 | 16777216 | 16384 | 2147483648 |
General Purpose | 32 | 16777216 | 16384 | 4294967295 |
General Purpose | 64 | 16777216 | 16384 | 4294967295 |
メモリ最適化 | 2 | 16777216 | 16384 | 536870912 |
メモリ最適化 | 4 | 16777216 | 16384 | 1073741824 |
メモリ最適化 | 8 | 16777216 | 16384 | 2147483648 |
メモリ最適化 | 16 | 16777216 | 16384 | 4294967295 |
メモリ最適化 | 32 | 16777216 | 16384 | 4294967295 |
query_cache_size
クエリ キャッシュは、既定では無効になっています。 クエリ キャッシュを有効にするには、query_cache_type
パラメーターを構成します。
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
Note
クエリ キャッシュは MySQL 5.7.20 以降で非推奨となり、MySQL 8.0 で削除されました。
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 |
---|---|---|---|---|
Basic | 1 | Basic レベルでは構成できません | 該当なし | 該当なし |
Basic | 2 | Basic レベルでは構成できません | 該当なし | 該当なし |
General Purpose | 2 | 0 | 0 | 16777216 |
General Purpose | 4 | 0 | 0 | 33554432 |
General Purpose | 8 | 0 | 0 | 67108864 |
General Purpose | 16 | 0 | 0 | 134217728 |
General Purpose | 32 | 0 | 0 | 134217728 |
General Purpose | 64 | 0 | 0 | 134217728 |
メモリ最適化 | 2 | 0 | 0 | 33554432 |
メモリ最適化 | 4 | 0 | 0 | 67108864 |
メモリ最適化 | 8 | 0 | 0 | 134217728 |
メモリ最適化 | 16 | 0 | 0 | 134217728 |
メモリ最適化 | 32 | 0 | 0 | 134217728 |
lower_case_table_names
lower_case_table_name
パラメーターは既定で 1 に設定されます。MySQL 5.6 と MySQL 5.7 では、このパラメーターを更新できます。
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
Note
MySQL 8.0 では、lower_case_table_name
は既定で 1 に設定され、変更できません。
innodb_strict_mode
Row size too large (> 8126)
のようなエラーが表示される場合は、innodb_strict_mode
パラメーターをオフにすることを検討してください。 innodb_strict_mode
は、サーバー レベルでグローバルには変更できません。 行データのサイズが 8K を超える場合、エラー通知なしでデータが切り捨てられ、それによりデータが損失する可能性があります。 ページ サイズ制限に合うようにスキーマを変更することをお勧めします。
このパラメーターは、init_connect
を使用してセッション レベルで設定できます。 セッション レベルで innodb_strict_mode
を設定するには、一覧にないパラメーターの設定に関する記事を参照してください。
Note
読み取りレプリカ サーバーがある場合、ソース サーバーのセッション レベルで innodb_strict_mode
を OFF
に設定すると、レプリケーションが中断されます。 読み取りレプリカがある場合、このパラメーターは ON
に設定したままにすることをお勧めします。
sort_buffer_size
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | Basic レベルでは構成できません | 該当なし | 該当なし |
Basic | 2 | Basic レベルでは構成できません | 該当なし | 該当なし |
General Purpose | 2 | 524288 | 32768 | 4194304 |
General Purpose | 4 | 524288 | 32768 | 8388608 |
General Purpose | 8 | 524288 | 32768 | 16777216 |
General Purpose | 16 | 524288 | 32768 | 33554432 |
General Purpose | 32 | 524288 | 32768 | 33554432 |
General Purpose | 64 | 524288 | 32768 | 33554432 |
メモリ最適化 | 2 | 524288 | 32768 | 8388608 |
メモリ最適化 | 4 | 524288 | 32768 | 16777216 |
メモリ最適化 | 8 | 524288 | 32768 | 33554432 |
メモリ最適化 | 16 | 524288 | 32768 | 33554432 |
メモリ最適化 | 32 | 524288 | 32768 | 33554432 |
tmp_table_size
このパラメーターの詳細については、MySQL のドキュメントを確認してください。
[価格レベル] | 仮想コア数 | 既定値 (バイト) | 最小値 (バイト) | 最大値 (バイト) |
---|---|---|---|---|
Basic | 1 | Basic レベルでは構成できません | 該当なし | 該当なし |
Basic | 2 | Basic レベルでは構成できません | 該当なし | 該当なし |
General Purpose | 2 | 16777216 | 1024 | 67108864 |
General Purpose | 4 | 16777216 | 1024 | 134217728 |
General Purpose | 8 | 16777216 | 1024 | 268435456 |
General Purpose | 16 | 16777216 | 1024 | 536870912 |
General Purpose | 32 | 16777216 | 1024 | 1073741824 |
General Purpose | 64 | 16777216 | 1024 | 1073741824 |
メモリ最適化 | 2 | 16777216 | 1024 | 134217728 |
メモリ最適化 | 4 | 16777216 | 1024 | 268435456 |
メモリ最適化 | 8 | 16777216 | 1024 | 536870912 |
メモリ最適化 | 16 | 16777216 | 1024 | 1073741824 |
メモリ最適化 | 32 | 16777216 | 1024 | 1073741824 |
InnoDB バッファー プールのウォームアップ
Azure Database for MySQL を再起動した後、テーブルに対してクエリを実行すると、ディスクに存在するデータ ページが読み込まれます。 これにより、クエリを最初に実行したときの待機時間が長くなり、パフォーマンスが低下します。 待機時間の影響を受けやすいワークロードの場合、このパフォーマンスの低下を許容できない場合があります。
InnoDB
バッファー プールのウォームアップを使用して、ウォームアップ期間を短縮できます。 このプロセスでは、DML または SELECT 操作による対応する行へのアクセスを待たずに、再起動の "前" に、バッファー プールに存在するディスク ページが再読み込みされます。 詳しくは、InnoDB バッファー プール サーバーのパラメーターに関する記事を参照してください。
ただし、パフォーマンスの向上は、サーバーの起動時間が長くなるという代償を伴います。 このパラメーターを有効にすると、サーバーにプロビジョニングされている IOPS に応じて、サーバーの起動と再起動にかかる時間が長くなることが予想されます。 その間はサーバーを利用できないため、再起動時間をテストおよび監視して、起動または再起動のパフォーマンスが許容可能なものであることを確認することをお勧めします。 プロビジョニングされた IOPS の数が 1000 未満の場合 (つまり、プロビジョニングされたストレージが 335 GB 未満の場合) は、このパラメーターは使用しないでください。
サーバーのシャットダウン時にバッファー プールの状態を保存するには、サーバー パラメーター innodb_buffer_pool_dump_at_shutdown
を ON
に設定します。 同様に、サーバー起動時にバッファー プールの状態を復元するには、サーバー パラメーター innodb_buffer_pool_load_at_startup
を ON
に設定します。 サーバー パラメーター innodb_buffer_pool_dump_pct
の値を下げて微調整すると、起動または再起動時間への影響を制御できます。 既定では、このパラメーターは 25
に設定されます。
注意
InnoDB
バッファー プールのウォームアップ パラメーターは、最大 16 TB のストレージがある汎用ストレージ サーバーでのみサポートされています。 詳しくは、Azure Database for MySQL のストレージ オプションに関する記事を参照してください。
time_zone
初期デプロイの時点で、Azure Database for MySQL を実行するサーバーには、タイム ゾーン情報のシステム テーブルが含まれていますが、これらのテーブルには値が設定されていません。 MySQL コマンド ラインや MySQL Workbench などのツールから mysql.az_load_timezone
ストアド プロシージャを呼び出すことによって、テーブルに値を設定できます。 ストアド プロシージャを呼び出して、グローバルまたはセッション レベルのタイム ゾーンを設定する方法について詳しくは、タイム ゾーン パラメーターの操作 (Azure portal) またはタイム ゾーン パラメーターの操作 (Azure CLI) に関する記事を参照してください。
binlog_expire_logs_seconds
Azure Database for MySQL では、このパラメーターは、サービスがバイナリ ログ ファイルを消去するまでの待機の秒数を指定します。
"バイナリ ログ" には、テーブルの作成操作やテーブル データの変更など、データベースの変更を示すイベントが含まれます。 また、変更を行った可能性のあるステートメントのイベントも含まれます。 バイナリ ログは、主にレプリケーション操作とデータの復旧操作の 2 つの目的で使用されます。
通常、バイナリ ログは、ハンドルがサービス、バックアップ、またはレプリカ セットから解放されるとただちに消去されます。 レプリカが複数ある場合、バイナリ ログは、最も遅いレプリカが変更を読み取るまで待機してから消去されます。 バイナリ ログを長く保持する場合は、パラメーター binlog_expire_logs_seconds
を構成できます。 binlog_expire_logs_seconds
が既定値の 0
に設定されている場合、バイナリ ログは、そのバイナリ ログのハンドルが解放されるとただちに消去されます。 binlog_expire_logs_seconds
を 0 より大きい値に設定すると、バイナリ ログは、その期間の後でのみ消去されます。
Azure Database for MySQL では、バックアップおよび読み取りレプリカでのバイナリ ファイルの消去などのマネージド機能は内部で処理されます。 Azure Database for MySQL サービスからデータ出力をレプリケートする場合、レプリカによってプライマリから変更が読み取られる前にバイナリ ログが消去されるのを回避するために、プライマリでこのパラメーターを設定する必要があります。 binlog_expire_logs_seconds
を大きい値に設定すると、バイナリ ログはすぐには消去されなくなります。 これにより、ストレージの課金が増加する場合があります。
event_scheduler
Azure Database for MySQL では、event_schedule
サーバー パラメーターは、イベント (つまり、スケジュールに従って実行されるタスク) の作成、スケジュール設定、および実行を管理します。これらは、特別なイベント スケジューラ スレッドによって実行されます。 event_scheduler
パラメーターが ON に設定されている場合、イベント スケジューラ スレッドは SHOW PROCESSLIST の出力にデーモン プロセスとして一覧表示されます。 次の SQL 構文を使用して、イベントを作成およびスケジュールできます。
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;
Note
イベントの作成の詳細については、以下の MySQL イベント スケジューラのドキュメントを参照してください。
event_scheduler サーバー パラメーターの構成
次のシナリオは、Azure Database for MySQL で event_scheduler
パラメーターを使用する 1 つの方法を示しています。 シナリオを説明するために、次の単純なテーブルの例を考えてみましょう。
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)
Azure Database for MySQL で event_scheduler
サーバー パラメーターを構成するには、次の手順に従います。
Azure portal でサーバーに移動し、[設定] で [サーバー パラメーター] を選択します。
[サーバー パラメーター] ブレードで、[値] ドロップダウン リストで
event_scheduler
を検索し、[オン] を選択し、[保存] を選択します。Note
動的なサーバー パラメーター構成の変更は、再起動なしでデプロイされます。
次に、イベントを作成するには、MySQL サーバーに接続し、次の SQL コマンドを実行します。
CREATE EVENT test_event_01 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR COMMENT ‘Inserting record into the table tab1 with current timestamp’ DO INSERT INTO tab1(id,createdAt,createdBy) VALUES('',NOW(),CURRENT_USER());
イベント スケジューラの詳細を表示するには、次の SQL ステートメントを実行します。
SHOW EVENTS;
次のような出力が表示されます。
mysql> show events; +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ 1 row in set (0.23 sec)
数分たったら、テーブルの行に対してクエリを実行し、構成した
event_scheduler
パラメーターに従って、1 分ごとに挿入される行の表示を開始します。mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | +----+---------------------+-------------+ 4 rows in set (0.23 sec)
1 時間たったら、テーブルで Select ステートメントを実行し、この例での
event_scheduler
の構成どおり、1 時間の間 1 分ごとにテーブルに挿入された値のすべての結果を表示します。mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | | 5 | 2023-04-05 14:51:04 | azureuser@% | | 6 | 2023-04-05 14:52:04 | azureuser@% | ..< 50 lines trimmed to compact output >.. | 56 | 2023-04-05 15:42:04 | azureuser@% | | 57 | 2023-04-05 15:43:04 | azureuser@% | | 58 | 2023-04-05 15:44:04 | azureuser@% | | 59 | 2023-04-05 15:45:04 | azureuser@% | | 60 | 2023-04-05 15:46:04 | azureuser@% | | 61 | 2023-04-05 15:47:04 | azureuser@% | +----+---------------------+-------------+ 61 rows in set (0.23 sec)
その他のシナリオ
イベントは、ご自身の具体的なシナリオの要件に基づいて設定できます。 以下に、SQL ステートメントを異なる時間間隔で実行するようにスケジュールする、いくつかの類似する例を示します。
SQL ステートメントを今すぐ実行し、1 日に 1 回繰り返し、終了時間は設定しない
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
1 時間ごとに SQL ステートメントを実行し、終了時間は設定しない
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
1 日ごとに SQL ステートメントを実行し、終了時間は設定しない
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
構成不可能なサーバー パラメーター
次のサーバー パラメーターは、このサービスでは構成できません。
パラメーター | 固定値 |
---|---|
Basic レベルでの innodb_file_per_table |
OFF |
innodb_flush_log_at_trx_commit |
1 |
sync_binlog |
1 |
innodb_log_file_size |
256 MB |
innodb_log_files_in_group |
2 |
ここにリストされていないその他の変数は、MySQL の既定値に設定されています。 バージョン 8.0、5.7、5.6 の MySQL ドキュメントを参照してください。