MySQLをチューニング,そしてスケールアップ/スケールアウトへ

第4回 MySQLチューニング(3) パフォーマンススキーマ

この記事を読むのに必要な時間:およそ 4.5 分

setup_テーブルでの設定

パフォーマンススキーマでどのような情報を取得するかはperformance_schema内の各setup_テーブルで定義します。これらのテーブルは稼働中にUPDATE文で値の変更が可能です。

表1 パフォーマンススキーマの設定関連のテーブル

テーブル名 役割
setup_actors 情報取得対象とするユーザアカウントの設定
setup_consumers どれだけの情報を取得するかの設定(現在のみ,履歴を含むなど)
setup_instruments MySQLサーバのソースコード内に設けられた処理時間や待機時間を収集するための⁠instrument⁠の設定
setup_objects 情報取得対象とするオブジェクトの設定(MySQL 5.6ではテーブルのみ)
setup_timers 各“instrument⁠カテゴリのデータ取得で使用するタイマーの設定。タイマーはperformance_timersテーブルのTIMER_NAME列の値

オプションファイルでの設定

MySQL 5.6からは上記のsetup_consumersテーブルとsetup_instrumentsテーブルの内容をオプションファイルにて設定可能です。consumerの有効無効を設定は以下の書式です。

performance_schema_consumer_consumer名=value

例)performance_schema_consumer_events_stages_current=on

instrumentについては,onとoffだけではなく,回数のみを計測するcountedを設定可能です。

performance_schema_instrument='instrument名=値'

値 = [on | true | 1] / [off | false | 0] / [counted] ⁠回数計測のみ)

なお,Instrument名にはワイルドカードが利用可能です。

例)

wait/synch/mutex/%

パフォーマンススキーマのデータ格納テーブルの名称

名称がevents_で始まるテーブルは個別の⁠instrument⁠で発生したイベント,イベントの開始時間や終了時間,ネストされたイベントのIDなどが格納されます。SQL文単位でのイベントは名称に_statements_が含まれるテーブルに,⁠テーブルを開く」⁠データを送信する」⁠一時表にデータをコピーする」などより詳細なステージ毎のイベントは_stages_が含まれるテーブルに,mutexやロック,IOによる待ちのイベントは_wait_が含まれるテーブルに格納されます。

テーブル名の末尾が_currentは現在のイベント,_historyはクライアント毎に最大でシステムパラメータperformance_schema_events_*_history_sizeで定義された件数までセッション単位での過去のイベント,_history_longは同様にperformance_schema_events_*_history_long_sizeで定義された件数までサーバ全体の過去のイベントが格納されます。またテーブル名_summary_が含まれるものは集計されたデータが表示されます。

SYSスキーマ

パフォーマンススキーマは非常に細かな粒度で情報が取得できるものの,データベース管理者やアプリケーション開発者にとっては細かすぎる場合もあります。そこでMySQLではパフォーマンススキーマやインフォメーションスキーマのデータに対して,よりシンプルなビューの集合であるSYSスキーマを用意し,性能問題の検出や診断などのタスクをより支援できるように改善しています。

SYSスキーマはps_helperと呼ばれていたスクリプト集へのフィードバックを元に開発さており,MySQL 5.5,5.6,5.7の各バージョンに対応しています。SYSスキーマには約80のビューが含まれており,コストの高いSQL文,IO量の大きいファイルや処理,ロックなどの状況を簡単に確認できます。SYSスキーマはGitHubで公開されているほか,後述のMySQL Workbenchから簡単にインストールすることもできます。

テーブル名がx$で始まるものは単位無しのデータで,そうでないものは人間が判断しやすいようにデータに単位が付けられています。

図3 SYSスキーマのビューの比較

図3 SYSスキーマのビューの比較

稼働状況の確認方法(3)-MySQL Workbenchのパフォーマンスダッシュボードとレポート

MySQL WorkbenchはMySQLの運用や開発を支援するオープンソースのGUIツールです。MySQL Workbench 6.1にはMySQLの稼働状況を表示するパフォーマンスダッシュボードと,SYSスキーマの内容をカテゴリ別に表示するパフォーマンスレポートが追加されました。

図4 パフォーマンスダッシュボード

図4 パフォーマンスダッシュボード

図5 パフォーマンスレポート

図5 パフォーマンスレポート

パフォーマンスレポートでは,IOの状況,問題となり得るSQL文,スキーマ毎の稼働状況などカテゴリ別にSYSスキーマの情報が表示されます。

図6 パフォーマンススキーマでの取得情報の制御画面

図6 パフォーマンススキーマでの取得情報の制御画面

図7 パフォーマンススキーマでの取得情報の詳細制御画面

図7 パフォーマンススキーマでの取得情報の詳細制御画面

パフォーマンススキーマで取得する情報量をGUIから制御することも可能です。

次回は

次回はMySQLでのSQL文のチューニングの基本をご紹介いたします。

著者プロフィール

梶山隆輔

MySQL Sales Consulting Senior Manager。

日本オラクル(株)において,MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて,オーストラリア,インド,台湾などに在籍するチームメンバーを束ね,アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。