分12第2回はパフォーマンスチューニングの基本についてMySQLをベースに解説します。データベースのパフォーマンスとは?データベースの処理性能の善し悪しとしてパフォーマンスという言葉でまとめて語られることもありますが,いくつかの指標が期待された値となっているかの確認が必要となります。1つ目の要素は単位時間あたりの処理量であるスループット,もう1つの要素は処理の投入から応答までのレスポンスタイムです。スループットは秒間のSQL処理件数(クエリ/秒,QPS)やトランザクション数(トランザクション/秒,TPS)などが指標とされます。処理の多重度の変化によってこれらの要素の値が変化していきます。スループットとレスポンスタイムはいずれも多重度の変化に対して単純に線形に変化するものではないので,特にユーザやデータベースのアクセスの増加が見込まれるシステムでは,テストを通じて多重度別の数値の推移を測定し,システムの要件に見合った状況になっているかを見極める必要性が出てきます。多重度を変化させた場合のスループットとレスポンスタイムの変化の例パフォーマンス測定のポイントパフォーマンスチューニングにあたって,最も重要なことはボトルネックを発見し改善していくことにあります。レスポンスタイムの観点からどのトランザクション,また複数のSQL文で構成されるトランザクションであればどのSQLが最も時間がかかっているのかを探し出していきます。その処理がシステムのどこで時間がかかっているのかを探す必要があります。処理にかかる時間の中には,実行待ちのキューに入っていていずれのリソースも使用していない時間も含まれます。処理の実行時間を直接的に計測することの他に,ハードウェアやOSのリソース利用状況,およびデータベース内部での処理を計測しておくことで,処理のボトルネックを見つける手がかりを得ます。ハードウェアリソースについては,OS付属のツールや各種の監視ツールを活用して主に以下の点を計測します。Hinemosなどが利用できます。Monitorなどが利用できます。これらのコマンドやツールの詳細は別途解説いたします。ベンチマークテスト構築したシステムが要件を満たしていることを検証するためにベンチマークテストを行います。MySQLのサポートエンジニアで“⁠漢(オトコ)のコンピュータ道⁠”で知られる奥野氏は「テストをしないことはリスクがあるということです。ベンチマークテストをしないということは,性能関係の問題が起きるリスクがあるということに他なりません。このベンチマークテストの前に確認しておくべき点が3点あります。見積もりまず,システムの運用後にどの程度のアクセスがあるかや,データサイズの推移などの見積もりを行います。既存システムを置き換えた場合には,それまでの状況を元に推測することもできます。業務システムなどの場合は従業員数の変化や特定の業務が発生する時期や頻度,生成されるデータ量などをおおむね見積もることができます。新規に開発し,かつ広く公開して利用されるようなサービスの場合などは,利用者がどのように増加するかが想定しにくいシステムもあります。見積もりが難しい場合でも,類似の他のサービスを参考とするかビジネスの成長計画などから逆算していくこことなります。業務システムの場合には利用者数の変動も企業の成長計画に照らし合わせることで見積もることがそこまで難しくはなく,公開型のサービスに比べて変動も小さいことが想定されます。想定される処理のパターンやフローも限られてきます。一方で公開型のサービスでは開始当初の予測だけではなく,将来的な成長を見積もるとともに,ベンチマークテストを通じてどのタイミングでシステムをどのように増強すべきか確認しておくができれば良いでしょう。シナリオベンチマークテストの中で実行する処理は,可能な限り実際の運用環境の状況に似せることが理想です。想定される処理パターンやフローの全てが再現できれば良いのですが,実際には処理の頻度が高い代表的な処理を選択してベンチマークテストに含めるパターンが多くなります。オンライン処理とデータの一括登録や洗い替え,集計など処理負荷の高いバッチ処理と同時に実行されるケースなどは,発生頻度は低いものの平常時の挙動や処理性能とは異なってくるため,注意すべき処理パターンとして個別に抽出してベンチマークテストを行うことが必要です。基礎性能データベースを使ったベンチマークテストの前に,利用している環境の各リソースの基礎性能を把握しておかないと,そもそも見積もりに無理があったり,データベースソフトウェアの処理性能以前の問題でボトルネックとなってしまう可能性もあります。カタログスペックでおおよその性能は把握できますが,場合によっては「桁が合っている」程度のこともあり得るので,ツールを使用して測定するほうが良さそうです。ハードディスクの場合にはディスクの外周側と内周側で性能に差がある点も考慮したテストの実施も検討します。日本オラクル(株)において,MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて,オーストラリア,インド,台湾などに在籍するチームメンバーを束ね,アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。