jumper

コラム

MySQLのパフォーマンスチューニング

2018年07月31日
MySQLのパフォーマンスチューニング

MySQLはチューニング次第でその能力を発揮できます。データベースの構成やレコード数によっては、サービス運営者の望むパフォーマンスが出ないこともあります。ここではMySQLのパフォーマンスを向上させるチューニングの基本を紹介します。

MySQLのパフォーマンス測定(ベンチマーク)

まずは現在のMySQLの状況を正確に把握してみましょう。それにはベンチマークを取得することが第一歩です。MySQLにおけるベンチマークツールはいくつかあります。例えばSysbenchなどは多くのシステムエンジニアが利用しているツールのひとつですし、MySQLにバンドルされているmysqlslapもよくつかわれているツールです。

両者ともシンプルなシナリオでのデータベースの基本的なパフォーマンス測定が可能です。SysBenchではデータベースだけでなく、CPU、メモリ、ディスクI/Oなどの計測もでき、OLTPというベンチマークによって簡単にトランザクション性能も確認することができます。
コマンドによってテストが開始され、実行結果が表示されます。スレッド数やポリシーに合わせて実行条件を設定し、ベンチマークを実施することで、パフォーマンスチューニングの方針を決定します。

インデックスとチューニング

インデックスはパフォーマンスチューニングの基本です。更新も参照もインデックスの設計次第でパフォーマンスに違いが出てきますので、インデックスについての知識はチューニングの第一歩であり、基本といえます。
インデックスは無暗に張りすぎてもいけませんし、なくてもダメです。要求されるパフォーマンスを目指して、適切なインデックスを活用しましょう。インデックスが適切に行われていれば、レコード数が増えてもクエリによって過大な負荷が発生することはありません。
特にMySQLはオラクルやMSSQLサーバと比べると、インデックス設計による影響が多大だといえます。オラクルやMSSQLサーバは有料の業務ソフトなのでそもそも強力なエンジンを誇っており、少々設計が悪くても高いパフォーマンスを発揮しています。オープンソースであるMySQLはその点チューニング次第というところがあります。

クエリキャッシュ

次にクエリキャッシュの機能を見てみます。クエリキャッシュとは、一度実行されたクエリをキャッシュしておき、同じクエリが要求された際に前回と同じ内容を返します。クエリの実行がなされないまま、結果を返すので、その分応答速度が速くなります。
クエリキャッシュはその使う時を適切に判断しなければなりません。例えば、参照系であればクエリキャッシュの恩恵は大きく受けられますが、更新系では意味をなしません。特に参照系でも更新頻度の少ないテーブルで使うとパフォーマンスが高くなります。クエリキャッシュは使い方次第で高いパフォーマンスを期待できますが、キャッシュの構成、ワークロードによっては逆にパフォーマンスが落ちることもあるので、注意が必要です。

まとめ

MySQLはオープンソースのデータベースですから、有償の業務系データベースと比べると機能面で劣るところもあります。しかし、チューニングや適切な構成・設計を意識することで、オラクルやMSサーバにはないメリットを受けることもあります。データベースエンジニアのスキルアップにもつながるMySQLのパフォーマンスチューニングを心掛けてみてはいかがでしょうか。


ソフトエイジェンシー関連製品URL

https://www.softagency.co.jp/products/mysql

CONTACT

製品・サービスに関するご質問、お見積もり、お問い合わせなど、お気軽にご連絡ください。

 050-5505-5509

受付時間 9:30 - 12:00, 13:00 - 17:00
(土日祝および年末年始を除く)