Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
約9年前投稿 修正あり

MySQL SYSスキーマ入門のQ&Aフォローアップ(The Percona Performance Blogより)

Percona社のMySQLのSYSスキーマ入門のオンラインセミナーのQ&Aのをフォローアップする。SYSスキーマの利用条件、何が出来るのか、性能影響についてなどの質問に回答している。

原文
Webinar: Introduction to MySQL SYS Schema follow up questions - MySQL Performance Blog (English)
翻訳依頼者
D98ee74ffe0fafbdc83b23907dda3665 B5aa4f809000b9147289650532e83932
翻訳者
B5aa4f809000b9147289650532e83932 taka-h
翻訳レビュアー
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


出典について

この記事はThe Percona Performance Blog内のDaniel Guzmán Burgos氏によるWebinar: Introduction to MySQL SYS Schema follow up questions(2015/9/16)を翻訳したものです。


MySQLのSYSスキーマ入門のオンラインセミナーに参加してくれてありがとう。このブログはセミナーで答える時間がなかった追加の質問について説明する為のものである。

MySQL 5.6ではパフォーマンススキーマを有効にして、その後にsysスキーマをインストールしてよいだろうか?もしくはこれらは同じものなのだろうか?

SYSスキーマを利用するためにはパフォーマンススキーマを有効化する必要があり、これらは異なるものだ。 一般的には、パフォーマンススキーマはデータを収集し保存し、一方でSYSスキーマはデータを読取り表示する。

プライマリデータベース上でSYSスキーマをインストールしたら、スレーブにレプリケーションされるだろうか?

デフォルトではレプリケーションされない。SYSスキーマをスレーブにレプリケーションさせたければ、before_setup.sqlを修正(https://github.com/MarkLeith/mysql-sys/blob/master/before_setup.sql#L18)し"SET sql_log_bin = 0;"をスキップさせればよい。

MySQLは実行中の遅いクエリー(slow query)をテーブルに保存することはできるのだろうか?

その通り、保存可能だ。https://dev.mysql.com/doc/refman/5.6/en/log-destinations.html

クエリの実行時刻および所要時間をパフォーマンススキーマのevents_statements_current/historyビューでみるにはどのようにしたら良いだろうか?

performance_schema.events_statements_summary_by_digestテーブルがよいだろう、このテーブルはFIRST_SEENとLAST_SEENというdatetime値のフィールドを持つ。

あるクエリの特定の統計情報をSYSスキーマのビューでみるとき、時間の範囲を指定して評価対象のクエリを指定することはできるのだろうか?あるいは、その時までに実行完了している全てのクエリが評価対象になるのだろうか?

原則的に、その時までに実行完了している全てのクエリとなる。ただし、「diagnostics」または「ps_trace_statement_digest」などのパラメータをランタイム値として受取るいくつかのストアドプロシージャを使っているときは例外となる。

テーブルやインデックスの再構成を自動化するスクリプトを作りたい。どのテーブル、あるいはどのインデックスが断片化率が高く再構成が必要か、をどのように判断すればよいだろうか?

この用途の為には全く別のものを使う必要がある。InnoDBのテーブル内部の断片化について知る為には、XtraBackupを-statsオプションをつけて使うことをお勧めする。

https://www.percona.com/doc/percona-xtrabackup/2.2/xtrabackup_bin/analyzing_table_statistics.html

デメリットやオーバーヘッドは?

パフォーマンススキーマを利用することによりオーバーヘッドが発生する。私はこのプレゼンテーションの見方がよいと思う。(https://www.percona.com/live/mysql-conference-2014/sessions/performanceschema-worth-overhead) すなわち、オーバーヘッドは動的であり、他人のベンチマークにたよらないで欲しい。自分のアプリケーションのベンチマークを行い、実際のオーバーヘッドを把握するのである。

SYSスキーマを利用している時のメモリおよびIO観点での性能影響は?調整する為の方法やSYSスキーマをよりよく動作させる為に役に立つサーバー変数は何かあるだろうか?

必要なインストゥルメントだけを利用して欲しい。このブログ投稿にはこれに関する追加の情報がある。

http://marcalff.blogspot.com.co/2011/06/performance-schema-overhead-tuning.html

レプリケーション関連に関してSYSスキーマはどのようにデータを記録しているのだろうか?

MySQL 5.7.2で初めてパフォーマンススキーマでレプリケーション関連の情報を出力するようになった。すなわちhttps://dev.mysql.com/doc/refman/5.7/en/performance-schema-replication-tables.htmlである。SYSスキーマについていえば、レプリケーション関連について確認できるのは現在時点では「diagnostics」プロシージャ内だけである。しかしご想像の通り、MySQL 5.7.2以上でしかデータは確認できない。

SYSスキーマはPerconaに組込みになっていないのだろうか?

現在時点では、noである。

Galeraの3ノードクラスターでSYSスキーマを使うことはできるのだろうか?

その通り。必要になるのはパフォーマンススキーマだけで、これはPXCやGalera Clusterでも利用できる。

SYSスキーマから傾向を表す情報をえることはできるだろうか?フルテーブルスキャンの経時変化、レイテンシーの経時変化、あるいはその同種の情報である

可能である。プロシージャを使えばよく、例えば「diagnostics」がある。

パフォーマンスのデータはどのようにすれば初期化できるだろうか?

ps_truncate_all_tablesプロシージャを呼び出せばよい。パフォーマンススキーマのテーブルのtruncateは、「収集されたイベントのクリア」と等価である。TRUNCATE TABLEはサマリテーブルにも使えるが、この場合はサマリの列を0またはNULLにするだけで、行を削除することにはならない。

SYSスキーマはMySQL 5.6以前でもインストールできるだろうか?

MySQL 5.5ではps_helperが利用できる

https://github.com/MarkLeith/dbahelper

SYSスキーマはMySQL 5.0のパフォーマンススキーマに対応しているだろうか?

残念ながら、MySQL 5.0にはパフォーマンススキーマがない。MySQL 5.5.3から利用できる。

Gelera ClusterでSYSスキーマをある1ノードにインストールした場合、SYSスキーマは全ノードで利用可能となるだろうか?また、SYSスキーマではクラスタの情報も利用できるのか、あるいはローカルノードの情報のみを収集するのか、どちらなのだろうか?

Galera 3を利用しているPXC 5.6では、答えはYesで全ノードに複製される。また、パフォーマンススキーマはローカルノードのデータのみを収集する。

次の記事
GitHub : ノマドなエンジニア達とRubyをスケールさせる
前の記事
Telegrafを使ってInfluxDBとKafkaにメトリクスを送信する(InfluxDB Blogより)

Feed small 記事フィード

新着記事Twitterアカウント