ApsaraDB RDS for MySQLにパラメータ診断機能が登場したので紹介する

2024年3月28日掲載

Alibaba Cloud

この記事では、ApsaraDB RDS for MySQLにパラメータ診断機能が登場したので紹介します

目次

はじめに

クラウドベースのサービスで、アプリケーション・サービスをRDS(Relational Database Service)へ接続し疎通できたら、それで完了と思っていませんか?実はアプリケーション・サービスの仕様や要求に応じて、RDSの基本性能をスケールすることは可能です。

例えば、MySQLではメジャーなパラメータである innodb_buffer_pool_size は、InnoDBテーブルデータやインデックスをキャッシュするための閾値です。このinnodb_buffer_pool_size の値をdefaultより20-30%増やすことで、より多くのデータをメモリ内に保持できるため、書き込み処理の際一時的に保持したいディスクIOのリソースを減らせられるため、結果としてSQLクエリの処理速度を向上させることができます。トレードオフとして、RDSサーバ側が利用可能なメモリには限りがあるため、この値を大きくし過ぎると他のプロセスに割り当てられるメモリが減少し、処理速度が却って遅くなる場合があります。
※default値はMySQLのバージョン、HA構成などRDB仕様によって変わります。

innodb_buffer_pool_sizeのほか、max_connections、query_cache_size、tmp_table_size、max_heap_table_size、sort_buffer_size、join_buffer_size、thread_cache_size、table_open_cache、binlog_cache_size、innodb_log_file_size、innodb_flush_log_at_trx_commit、、、とアプリケーション・サービスによってはよく操作するパラメータは軽く50種類を超えます。ターミナルやDMS(Database Management Tool)、BI ToolなどでMySQLサーバへ接続後、SHOW VARIABLES; コマンドを実行すれば、数百以上のパラメータが表示されます。あるいはApsaraDB RDSコンソール画面からMySQLで設定可能なパラメータ一覧が表示されます。

Streamlitの操作画面
Streamlitの操作画面

このパラメータ一覧から、現在利用中のアプリケーション・サービスが求めるRDS要件に応じて、パラメータを調整するのは心が折れるかと思います。それを払拭するのがパラメータ診断機能です。本記事では、このパラメータ診断機能について説明します。

<参考>
https://mysql-params.tmtms.net/mysqld/

 

1. パラメータ診断機能の重要性

冒頭でも説明いたしましたが、RDSとしてパラメータ診断機能は非常に重要です。
アプリケーション・サービスからRDSに求める要求に合わせるアプローチでもあり、またRDSの本来の性能を発揮するためにも必要となってきます。ApsaraDB RDS for MySQLの話ですが、RDSインスタンス購入直後の状態ではjoin_buffer_sizeのパラメータが比較的抑えられています。join_buffer_sizeパラメータは名前通りJOIN操作を実行する際、MySQLが使用するバッファサイズの閾値です。この join_buffer_size パラメータを大きくするとJOIN処理が向上しますが、多くの同時接続がある場合、メモリの過剰使用によりパフォーマンスが低下するリスクがあります。言い換えれば、同時接続が非常に少ない場合、このパラメータ値をシステムメモリ配下でdefault値から20-50%増やすことで、MySQLがPostgreSQLと比べて苦手とするJOIN処理を高速化することができます。
(MySQLのJOINはNested Loop Joinアルゴリズムとして、小さいテーブル全行をループで一方のテーブルでマッチする行を探しながら、一致しているものから一時的なIOに保持しつつ、処理が終わったら表示するロジックです。そのため、Indexがないテーブルもしくは大きなテーブル同士のJOINはどうしても遅くなってしまいます)
このように、パラメータを診断し、その診断結果に基づいて適材適所なチューニングをすることで、処理遅延の排除、クエリのタイムアウト撲滅、データベースのオーバーロード回避、リソース使用効率化によるストレージ容量の節約などが見込めれます。またmax_connect_errors や skip_show_database などセキュリティ関連のパラメータを適切に設定することで、データ漏洩や不正アクセスのリスクを抑制することもできます。
※max_connect_errorsは許可される接続エラーの最大数を設定する閾値で、例えば、ブルートフォース攻撃やDDoSなど不正な接続により、この設定閾値を超えたらhostが一時的にブロックされるパラメータです。
※skip_show_database は権限を持たないユーザーが利用可能なデータベース・テーブルリスト閲覧を防ぐためのパラメータです。

2. ApsaraDB RDS for MySQLのパラメータ診断機能について

ApsaraDB RDS for MySQLにパラメータ診断機能が登場しています。この機能は無料で手持ちのApsaraDB RDS for MySQLインスタンスのヘルスチェックが出来る上、パフォーマンス向上に欠かせないパラメータチューニングをより手軽に行えることが出来ます。こちらは日本リージョンでも利用ができ、ApsaraDB RDS for MySQLのみ対応しています(MySQL 5.6、5.7、8.0)
パラメータ診断機能の基本的な流れとしては、ApsaraDB RDS for MySQLコンソールにて、対象のMySQLインスタンスのパラメータを診断することがスタートとなります。コンソールでユーザーが診断操作をしたら、Primary/読み取り専用インスタンスに分けて診断を行い、インスタンスの状態やベンチマークなどの要素を嚙み合わせながら、パラメータ設定を静的に解析してくれます。しばらくすると診断結果が表示されます。その診断結果には過去7日間のパラメータ変更履歴が含まれます。

Streamlitの操作画面

3. 実際に診断してみる

パラメータ診断機能を試すべく、ApsaraDB RDS for MySQLを購入し、パラメータ診断機能を確認します。購入直後、コンソール画面にて、左側タブから Autonomy Services > Diagnosticsを選定することで、パラメータ診断機能が表示されます。

Streamlitの作業全体

右下の「Create report」をクリックすることで、診断結果が表示されます。インスタンス起動直後でありデフォルトパラメータでの診断なので、全て正常と表示されていますね。

Streamlit_コード

試しに Join_buffer_size をデフォルト値の1Mからメモリ上限の16Mに変更します。すると、パラメータ診断機能から「Critical(重要): すぐにパラメータを変更することを推奨します」とアラートが表示されます。この観点から運用に適切なパラメータをコントロールしていると推測します。

Streamlit_コード_1

4. 診断しながらパフォーマンス改善してみる

実際の活用方法を簡単に紹介すべく、パラメータ診断機能を活かしながら、SQLクエリの高速化をしてみます。

試しに2つの100万レコードをストアドプロシージャで予め作成し、この2つのテーブルをJOINします。このJOIN処理は通常時間がかかるので、Join_buffer_size パラメータを使って処理速度を改善させます。

まずはJoin_buffer_size がデフォルトパラメータである 1 Mのまま、100万レコード×100万レコードのJOIN処理をしてみます。その結果、3423msと結構時間がかかります。

Streamlit_Nginxのインストール_2

この処理速度を自前で改善すべく、ApsaraDB RDS for MySQLコンソール画面にて、Join_buffer_size パラメータを3Mに変更します。上述通りパラメータを変更することは何かリスクが付き物ですが、今回多くのユーザーによる同時接続がないので、そのまま変更します。

Join_buffer_size パラメータを変更した結果が問題ないか、パラメータ診断機能をチェックします。問題なさそうです。

改めて、再度100万レコード×100万レコードのJOIN処理をしてみます。結果1244msと63%以上改善しています。

Streamlit_コード_2

5. さいごに

パラメータ診断機能は、DBを初めて利用する初心者から上級者まで幅広いユーザーが使うことで、データベースのパラメータ設定ミス抑制やデータベースとしてパフォーマンス向上を行うことができます。

パラメータ診断機能は無料で利用できるので、既存のApsaraDB RDS for MySQLでスペック変更などお金をかけずにパフォーマンスを向上したい場合は、本記事を参考にしていただければ幸いです

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません