PolarDB for MySQL には、スループット集約型のワークロード向けに主要な InnoDB パラメーターを事前設定したパフォーマンス専有型パラメータテンプレートが含まれています。手動でのパラメータチューニングを行うことなく、テンプレートをクラスターに適用するだけでパフォーマンスを向上させることができます。
テンプレート内のパラメーター
各 MySQL バージョンには、バージョン固有のパラメーターを含む独自のテンプレートがあります。以下の表に、各テンプレートで変更されるパラメーターとその値を示します。
PolarDB for MySQL 5.6 (mysql_innodb_5.6_standard_high)
| パラメーター | 説明 | テンプレート値 | デフォルト値 |
|---|---|---|---|
innodb_flush_log_at_trx_commit | InnoDB がトランザクションログをディスクにフラッシュするタイミングを制御します。0 に設定すると、InnoDB は 1 秒に 1 回ログを書き込み、フラッシュします。 | 0 | 1 |
query_cache_type | クエリ結果をキャッシュして読み取りパフォーマンスを向上させる高速クエリキャッシュ機能を有効にします。 | 1 | 0 |
PolarDB for MySQL 5.7 (mysql_innodb_5.7_standard_high)
| パラメーター | 説明 | テンプレート値 | デフォルト値 |
|---|---|---|---|
innodb_flush_log_at_trx_commit | InnoDB がトランザクションログをディスクにフラッシュするタイミングを制御します。0 に設定すると、InnoDB は 1 秒に 1 回ログを書き込み、フラッシュします。 | 0 | 1 |
loose_innodb_primary_purge_max_id_lag | 読み取り専用ノードで保持されている読み取りビューによってプライマリノードに課される制限を解除します。 | 18446744073709551104 | N/A |
PolarDB for MySQL 8.0 (mysql_innodb_8.0_standard_high)
| パラメーター | 説明 | テンプレート値 | デフォルト値 |
|---|---|---|---|
innodb_flush_log_at_trx_commit | InnoDB がトランザクションログをディスクにフラッシュするタイミングを制御します。0 に設定すると、InnoDB は 1 秒に 1 回ログを書き込み、フラッシュします。 | 0 | 1 |
loose_innodb_lock_sys_rec_partition | トランザクションロック (行ロックとテーブルロック) の管理に使用されるシャード数を設定します。シャード数を増やすと、トランザクションロック管理によって生じる競合のオーバーヘッドが削減されます。 | 64 | 1 |
loose_query_cache_type | クエリ結果をキャッシュして読み取りパフォーマンスを向上させる高速クエリキャッシュ機能を有効にします。 | ON | OFF |
制限事項
パフォーマンス専有型パラメータテンプレートは、PolarDB Standard Edition でのみ利用可能です。サポートされているクラスターのバージョンは次のとおりです:
PolarDB for MySQL 5.6:リビジョンバージョン 5.6.1.0.30 以降
PolarDB for MySQL 5.7:リビジョンバージョン 5.7.1.0.11 以降
PolarDB for MySQL 8.0.1:リビジョンバージョン 8.0.1.1.21 以降
PolarDB for MySQL 8.0.2:リビジョンバージョン 8.0.2.2.6.1 以降
ご利用のクラスターのリビジョンバージョンを確認するには、「エンジンバージョンの確認」をご参照ください。
潜在的な影響
innodb_flush_log_at_trx_commit を 0 に設定すると、書き込みスループットは向上しますが、次の 2 つのトレードオフが発生します:
データの耐久性の低下:ログは 1 秒に 1 回ディスクにフラッシュされるため、データベースがクラッシュした場合、1 秒以内にディスクに書き込まれなかったデータが失われる可能性があります。
レプリケーションラグの増加:同じ理由で、プライマリ/セカンダリ間の物理レプリケーションの遅延が最大 1 秒増加する可能性があります。
これらのリスクを排除しつつ、他のテンプレートパラメーターを維持するには、テンプレートを適用した後に innodb_flush_log_at_trx_commit を 1 にリセットしてください。
パフォーマンス専有型パラメータテンプレートを適用する前に、チケットを送信して、Alibaba Cloud の技術チームにご相談ください。
パフォーマンス専有型パラメータテンプレートの適用
テンプレートを適用するには、データベースの再起動が必要です。再起動中に、一時的なサービスの中断が発生する可能性があります。テンプレートはオフピーク時間に適用し、ご利用のアプリケーションが自動的に再接続するように設定されていることを確認してください。
利用可能な方法は 2 つあります。どちらの方法でも、確定前にパラメーターの差分をプレビューできます。
方法1:[パラメータテンプレート] ページから適用
PolarDB コンソールにログインします。
左上のコーナーで、クラスターがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[パラメータテンプレート] をクリックします。
[システムパラメータテンプレート] をクリックします。
ご利用の MySQL バージョンに対応するテンプレート (
mysql_innodb_5.6_standard_high、mysql_innodb_5.7_standard_high、またはmysql_innodb_8.0_standard_high) を見つけ、[操作] 列の [インスタンスに適用] をクリックします。[インスタンスに適用] パネルでクラスターを選択し、[>] をクリックして [選択されたインスタンス] リストに追加します。[パラメータ比較] セクションに、現在のクラスターパラメーターとテンプレート値の差分が表示されます。

[OK] をクリックし、データベースを再起動して変更を有効にします。
方法2:クラスターの [パラメータ] ページから適用
PolarDB コンソールにログインします。
左上のコーナーで、クラスターがデプロイされているリージョンを選択します。
対象のクラスターを見つけ、そのクラスター ID をクリックします。
左側のナビゲーションウィンドウで、[設定と管理] > [パラメータ] を選択します。
[テンプレートの適用] をクリックします。

[テンプレートの適用] ページで、[テンプレート名] ドロップダウンリストからパフォーマンス専有型テンプレートを選択します。[パラメータ比較] セクションに、現在のクラスターパラメーターとテンプレート値の差分が表示されます。

[OK] をクリックし、データベースを再起動して変更を有効にします。
パフォーマンス比較
以下の結果は、PolarDB for MySQL 8.0 クラスターで、Sysbench および TPC-C (Transaction Processing Performance Council) ベンチマークを使用して、デフォルトのパラメーターとパフォーマンス専有型テンプレートを比較したものです。
テスト環境:
クラスター:88 コア、720 GB メモリ、リビジョンバージョン 8.0.1.1.21 以降
ECS からクラスターへのネットワーク遅延:約 1 ms。十分なコンピューティングリソースとネットワークリソースを備えた ECS インスタンス
Sysbench テスト:
テストセット:
read_writeおよびwrite_onlyデータ量:25 テーブル x 25,000 行
メトリック:QPS (クエリ/秒) — 1、8、16、32、64、128、256、512、1,024 の同時接続数で 1 秒あたりに実行される SQL ステートメント (INSERT、SELECT、UPDATE、DELETE) の数
TPC-C テスト:
ツール:TPCC-MySQL
データ量:1,000 ウェアハウス
メトリック:TPM (トランザクション/分) — 1、8、16、32、64、128、256、512、1,024 の同時接続数で、1 分あたりにコミットされるトランザクション数。最大認定スループット (MQTh) を測定します。
TPC-C テストは TPC-C ベンチマークの方法論に基づいていますが、TPC-C ベンチマークのすべての要件を満たしているわけではありません。これらの結果は、公開されている TPC-C ベンチマークの結果と比較することはできません。
Sysbench の結果:

TPC-C の結果:

結論:同時接続数が 256 以上の場合、パフォーマンス専有型パラメータテンプレートはパフォーマンスを 2 倍以上向上させます。
次のステップ
高速クエリキャッシュ — 高速クエリキャッシュ機能の仕組みと設定方法について説明します
エンジンバージョンの確認 — ご利用のクラスターが最小バージョン要件を満たしていることを確認します