英語フランス語スペイン語

Ad


OnWorksファビコン

innotop-クラウドでのオンライン

Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、またはMACOSオンラインエミュレーターを介してOnWorks無料ホスティングプロバイダーでinnotopを実行します

これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドinnotopです。

プログラム:

NAME


innotop-MySQLおよびInnoDBトランザクション/ステータスモニター。

SYNOPSIS


サーバーを正常に監視するには:

イノトップ

ファイルからInnoDBステータス情報を監視するには:

innotop /var/log/mysql/mysqld.err

パイプとフィルターの構成でinnotopを非対話的に実行するには、次のようにします。

innotop --count 5 -d 1 -n

特定のユーザー名とパスワードを使用して別のシステム上のデータベースを監視するには:

innotop -u -p -h

DESCRIPTION


innotopはMySQLサーバーを監視します。 それぞれのモードは、何が何であるかの異なる側面を示しています
サーバーで起こっています。 たとえば、レプリケーションを監視するためのモードがあります。
クエリとトランザクション用です。 innotopはデータを定期的に更新するため、
ビューを更新しています。

innotopにはパワーユーザー向けの機能がたくさんありますが、仮想的に起動して実行できます
構成なし。 始めたばかりの場合は、「クイックスタート」を参照してください。 押す '?' いずれにおいても
状況依存ヘルプのためにinnotopを実行している間の時間。

クイックスタート


innotopを起動するには、ターミナルまたはコマンドプロンプトを開きます。 innotopをにインストールした場合
システムでは、「innotop」と入力してEnterキーを押すだけで済みます。 そうでなければ、あなたは
innotopのディレクトリに移動し、「perlinnotop」と入力する必要があります。

オプションが指定されていない場合、innotopはローカルホスト上のMySQLサーバーへの接続を試みます
他の接続パラメータにmysql_read_default_group = clientを使用します。 もしあなたが必要ならば
別のユーザー名とパスワードを指定し、それぞれ-uオプションと-pオプションを使用します。 に
別のホスト上のMySQLデータベースを監視するには、-hオプションを使用します。

接続すると、innotopは次のように表示されます。

[RO]クエリリスト(ヘルプは?)localhost、01:11:19、449.44 QPS、14/7/163 con / run

QPSのロード時にCXNが遅いQCacheHitKCacheHit BpsIn BpsOut
ローカルホスト合計0.00k 1.07 697%0.00%98.17k 476.83k

CXN CmdIDユーザーホストDB時間クエリ
localhostクエリ766446598テスト10.0.0.1foo 00:02 INSERT INTOテーブル(

(このサンプルは右側が切り捨てられているため、 'manを実行すると端末に収まります。
innotop ')

サーバーがビジー状態の場合は、より多くの出力が表示されます。 画面の最初の行に注意してください。
これは、読み取り専用がtrue([RO])に設定されていること、現在のモード、およびサーバーを示しています。
あなたはに接続しています。 キーストロークで他のモードに変更できます。 「T」を押して切り替えます
たとえば、InnoDBトランザクションのリストに追加します。

「?」を押しますキーを押して、現在のモードでアクティブになっているキーを確認します。 あなたはのいずれかを押すことができます
これらのキーとinnotopは、要求されたアクションを実行するか、追加の入力を求めるプロンプトを表示します。
システムでTerm :: ReadLineがサポートされている場合は、Tabキーやその他のキーを使用してオートコンプリートできます
入力を編集します。

innotopを終了するには、「q」キーを押します。

OPTIONS


innotopは、ほとんどの場合、構成ファイルを介して構成されますが、一部の構成は
オプションはコマンドラインから取得できます。 InnoDBを監視するファイルを指定することもできます
ステータス出力; 詳細については、「ファイルの監視」を参照してください。

オプション名の前に--noを付けることで、一部のオプションを無効にすることができます。 たとえば、-noinc
(または--no-inc)は「--inc」を否定します。

- 色
端末の色付けを有効または無効にします。 「カラー」設定ファイルの設定に対応します。

--config
読み取る構成ファイルを指定します。 このオプションは粘着性がありません。つまり、
構成ファイル自体には保持されません。

- カウント
終了する前に、指定された回数(ティック)だけ更新してください。 各更新は
「間隔」秒の間一時停止し、続いてMySQL接続からデータを要求します。
端末に印刷します。

- 遅れ
ティック(リフレッシュ)の間に一時停止する時間を指定します。 に対応します
構成オプション「間隔」。

- 助けて
コマンドラインの使用法の要約を出力して終了します。

- ホスト
接続するホスト。

--株式会社
innotopが絶対数と相対数(オフセット)のどちらを表示するかを指定します
以前の値から)。 構成オプション「status_inc」に対応します。

- モード
innotopを開始するモードを指定します。 構成に対応
オプション「モード」。

--非整数
非対話型操作を有効にします。 詳細については、「非対話型操作」を参照してください。

- パスワード
接続に使用するパスワード。

- 港
接続に使用するポート。

--スキップセントラル
中央構成ファイルを読み取らないでください。

- ユーザー
接続に使用するユーザー。

- バージョン
バージョン情報を出力して終了します。

- 書きます
構成オプション「読み取り専用」を0に設定し、innotopが実行中の書き込みを行うようにします
構成する 〜/ .innotop / innotop.conf 終了時に、構成ファイルがロードされていない場合
起動時。

ホッケー


innotopはインタラクティブであり、キーを押すだけで制御できます。

・大文字のキーはモードを切り替えます。

・小文字のキーは、現在のモード内で何らかのアクションを開始します。

・他のキーは、構成の変更やinnotopライセンスの表示などの特別なことを行います。

押す '?' 現在アクティブなキーとその機能をいつでも確認できます。

モード


innotopの各モードは、サーバーから特定のタイプのデータを取得して表示します
あなたが監視しています。 大文字のキーでモードを切り替えます。 以下は
各モードの簡単な説明(アルファベット順)。 モードに切り替えるには、を押します
次のリストの見出しの前にリストされているキー:

B:InnoDBバッファー
このモードでは、InnoDBバッファープール、ページ統計、挿入に関する情報が表示されます
バッファ、および適応ハッシュインデックス。 データはSHOWINNODBSTATUSから取得されます。

このモードには、「buffer_pool」、「page_statistics」、「insert_buffers」、および
デフォルトでは「adaptive_hash_index」テーブル。

C:コマンドの概要
このモードは、mytopのコマンドサマリーモードに似ています。 「cmd_summary」が表示されます
次のようなテーブル。

コマンドの概要(ヘルプは?)localhost、25 + 07:16:43、2.45 QPS、3 thd、5.0.40
_____________________コマンドの概要_____________________
名前値の割合最終増分の割合
Select_scan 3244858 69.89%2 100.00%
Select_range 1354177 29.17%0 0.00%
Select_full_join 39479 0.85%0 0.00%
Select_full_range_join 4097 0.09%0 0.00%
Select_range_check 0 0.00%0 0.00%

コマンドサマリーテーブルは、「STATUS_VARIABLES」から変数を抽出することによって作成されます。
変数は数値である必要があり、「cmd_filter」で指定されたプレフィックスと一致する必要があります
構成変数。 次に、変数は値の降順で並べ替えられ、
上記のように、最後の変数と比較します。 パーセンテージ列はパーセンテージです
テーブル内のすべての変数の合計の、したがって、の相対的な重みを見ることができます
変数。

この例は、プレフィックスが「Select_」の場合に表示される内容を示しています。 デフォルトのプレフィックスは
「Com_」。 's'キーでプレフィックスを選択できます。

これは、SHOW VARIABLES LIKE "prefix%"をメモリとniceで実行するようなものです。
フォーマット。

値はすべてのサーバーにわたって集計されます。 Pct列が正しくありません
複数のサーバーにまたがって集約されます。 これは、グループ化の既知の制限です
将来修正される可能性のあるアルゴリズム。

D:InnoDBデッドロック
このモードは、最後のInnoDBデッドロックに関係するトランザクションを表示します。 XNUMX番目のテーブル
は、各トランザクションが保持および待機したロックを示しています。 デッドロックはサイクルによって引き起こされます
待機グラフでは、XNUMXつのロックが保持され、XNUMXつは待機されている必要があります。
デッドロック情報は切り捨てられます。

InnoDBは、SHOWINNODBの他の情報よりもデッドロック情報を優先します
STATUS出力。 ロックが多い場合、デッドロック情報が非常に大きくなる可能性があります
大きく、SHOW INNODBSTATUS出力のサイズに制限があります。 大
デッドロックは、出力全体を埋めたり、切り捨てられたりして、表示されなくなる可能性があります
その他の情報。 別のモードでinnotopを実行している場合、たとえばT
モードで、突然何も表示されなくなった場合は、次のことを確認してください。
デッドロックにより、必要なデータが消去されました。

ある場合は、小さなデッドロックを作成して大きなデッドロックを置き換えることができます。 'w'キーを使用します
大きなデッドロックを小さなデッドロックで「ワイプ」します。 あなたが持っていない限り、これは機能しません
接続のデッドロックテーブルを定義しました(「サーバー接続」を参照)。

大きなデッドロックがいつ必要になるかを自動的に検出するようにinnotopを構成することもできます
小さいものと交換してください(「auto_wipe_dl」を参照)。

このモードでは、デフォルトで「deadlock_transactions」テーブルと「deadlock_locks」テーブルが表示されます。

F:InnoDB外部キーエラー
このモードは、最後のInnoDB外部キーエラー情報を表示します。
それが起こった、いつ、誰が、どのクエリがそれを引き起こしたかなど。

InnoDBには多種多様な外部キーエラーメッセージがあり、それらの多くは
解析するのは難しい。 innotopはここで常に最高の仕事をするわけではありませんが、たくさんのコードがあります
innotopが決してそうなる可能性が低い、この厄介で解析不可能な出力の解析に専念
この点で完璧です。 innotopで必要なものが表示されない場合は、見てください
ステータステキストで直接。

このモードでは、デフォルトで「fk_error」テーブルが表示されます。

I:InnoDB I / O情報
このモードは、I / Oスレッド、保留中のI / O、ファイルを含むInnoDBのI / O統計を表示します
その他のI / O、およびログ統計。 「io_threads」、「pending_io」、
デフォルトでは、「file_io_misc」テーブルと「log_statistics」テーブル。

L:ロック
このモードは、現在のロックに関する情報を表示します。 現時点では、InnoDBロックのみが
サポートされており、デフォルトでは、トランザクションが待機しているロックのみが表示されます。
この情報は、InnoDBステータステキストのTRANSACTIONSセクションから取得されます。 もしも
サーバーが非常にビジーである場合、ロック待機が頻繁に発生する可能性があります。 それができるようになるのに役立ちます
どのテーブルとインデックスがロックの「ホットスポット」であるかを確認します。 サーバーが実行されている場合
まあ、このモードでは何も表示されないはずです。

MySQLとinnotopを構成して、トランザクションの対象となるロックだけでなく監視することもできます
待っていますが、現在開催中のものもあります。 これは、InnoDBロックを使用して実行できます
モニター(http://dev.mysql.com/doc/en/innodb-monitor.html>)。 に文書化されていません
MySQLのマニュアルですが、次のステートメントを使用してロックモニターを作成する
innotopが使用するSHOWINNODBSTATUSの出力に影響します。

CREATE TABLE innodb_lock_monitor(a int)ENGINE = INNODB;

これにより、InnoDBは16秒ごとにMySQLファイルに出力を出力します。
マニュアルに記載されていますが、通常のSHOW INNODBSTATUS出力にも含まれます
innotopが解析および表示できるロック情報(これは文書化されていません)
機能)。

これは、不可能と思われることを、限られた範囲で実行できることを意味します(InnoDB
出力内の一部の情報を切り捨てます)、どのトランザクションが保持しているのかを確認できます
他の何かが待っているものをロックします。 InnoDBロックを有効または無効にすることもできます
このモードでキーマッピングを使用して監視します。

このモードでは、デフォルトで「innodb_locks」テーブルが表示されます。 これが画面のサンプルです
XNUMXつの接続がロックを待機している場合、別の接続が保持されます。

_________________________________InnoDBロック__________________________
CXNIDタイプ待機待機アクティブモードDBテーブルインデックス
localhost 12 RECORD 1 00:10 00:10 X テスト t1 プライマリ
localhost12表0:00 10:00IXテストt10
localhost 12 RECORD 1 00:10 00:10 X テスト t1 プライマリ
localhost11表0:00 00:00IXテストt25
localhost 11 RECORD 0 00:00 00:25 X テスト t1 プライマリ

最初の接続ID12が、でPRIMARYキーのロックを待機していることがわかります。
test.t1であり、10秒間待機しています。 XNUMX番目の接続は待機していません。
Waiting列は0ですが、同じインデックスでロックを保持しているためです。 それはあなたに伝えます
接続11は接続12をブロックしています。

M:マスター/スレーブレプリケーションステータス
このモードでは、SHOW SLAVESTATUSとSHOWMASTERSTATUSの出力がXNUMXつに表示されます。
テーブル。 最初のXNUMXつは、スレーブのステータスをSQLとI / Oスレッドのステータスに分割します。
最後はマスターステータスを示しています。 フィルタは、非スレーブサーバーを排除するために適用されます。
スレーブテーブル、およびマスターテーブルの非マスターサーバー。

このモードでは、「slave_sql_status」、「slave_io_status」、および「master_status」が表示されます。
デフォルトではテーブル。

O:テーブルを開く
このセクションは、MySQLのSHOW OPENTABLESコマンドからのものです。 デフォルトではフィルタリングされます
XNUMXつ以上のクエリで使用されているテーブルを表示するため、
どのテーブルが「ホット」か。 これを使用して、ロックされている可能性のあるテーブルを推測できます
暗黙のうちに。

このモードでは、デフォルトで「open_tables」モードが表示されます。

Q:クエリリスト
このモードでは、SHOW FULLPROCESSLISTからの出力が次のように表示されます。 マイトップのクエリリスト
モード。 このモードは InnoDB関連の情報を表示します。 これはおそらくXNUMXつです
一般的な使用法で最も便利なモード。

あなたの一般的なステータス情報を示す有益なヘッダーがあります
サーバ。 'h'キーでオンとオフを切り替えることができます。 デフォルトでは、innotopは非表示になります
非アクティブなプロセスとそれ自体のプロセス。 'i'でこれらのオンとオフを切り替えることができます
および「a」キー。

'e'キーを使用して、このモードからクエリを説明できます。 これにより、クエリが表示されます
全文、EXPLAINの結果、および新しいMySQLバージョンでは、最適化されたものでさえ
EXPLAINEXTENDEDの結果のクエリ。 innotopは特定のクエリを書き直そうとします
それらを説明可能にするために。 たとえば、INSERT / SELECTステートメントは書き換え可能です。

このモードでは、デフォルトで「q_header」テーブルと「processlist」テーブルが表示されます。

R:InnoDB行の操作とセマフォ
このモードでは、InnoDBの行操作、その他の行操作、セマフォ、および
待機配列からの情報。 「row_operations」が表示されます。
デフォルトでは、「row_operation_misc」、「semaphores」、および「wait_array」テーブル。

S:変数とステータス
このモードは、XNUMX秒あたりのクエリ数などの統計を計算し、それらをで出力します。
いくつかの異なるスタイル。 絶対値、または間の増分値を表示できます
ダニ。

キーを押すと、ビューを切り替えることができます。 's'キーはXNUMX行を印刷します
画面が更新されるたびに、 vmstat。 'g'キーは、ビューを次のように変更します
同じ数字のグラフ、 ロード。 'v'キーは、ビューをに変更します
左側に変数名のピボットテーブルがあり、連続して更新されます。
画面を左から右へ。 画面に表示する更新の数を選択できます
「num_status_sets」構成変数を使用します。

インタラクティブ操作では、画面に収まるようにヘッダーを省略できます。 選んで
事前定義されたセットから選択する「c」キーで表示する変数、または
独自のセットを作成できます。 'e'キーで現在のセットを編集できます。

このモードでは、他のモードのように実際にはテーブルは表示されません。 代わりに、
データを抽出してフォーマットするためのテーブル定義ですが、結果を次のように変換します
それを出力する前に特別な方法。 「var_status」テーブル定義を使用して


T:InnoDBトランザクション
このモードでは、InnoDBモニターの出力からのトランザクションが表示されます。 top-のようなフォーマット。
このモードが私がinnotopを書いた理由です。

'k'および 'x'キーを使用してクエリまたはプロセスを強制終了し、を使用してクエリを説明することができます
'e'または 'f'キー。 InnoDBはトランザクションでクエリ全体を出力しないため、
クエリが切り捨てられると、説明が正しく機能しない場合があります。

情報ヘッダーは、「h」キーを使用してオンとオフを切り替えることができます。 デフォルトでは、
innotopは、非アクティブなトランザクションとそれ自体のトランザクションを非表示にします。 これをオンに切り替えることができます
「i」キーと「a」キーでオフにします。

このモードでは、デフォルトで「t_header」テーブルと「innodb_transactions」テーブルが表示されます。

イノトップ ステータス


innotopが表示する最初の行は、ある種の「ステータスバー」です。 何が含まれるかは
現在のモード、および監視しているサーバー。 最初のいくつかの単語は常に
[RO](読み取り専用が1に設定されている場合)、Tモードの「InnoDBTxns」などのinnotopモード、
「?」を押すようにリマインダーが続きますいつでも助けを求めて。

ONE サーバ
最も単純なケースは、単一のサーバーを監視している場合です。 この場合、
接続はステータスラインの次です。 これは、作成時に付けた名前です。
接続-おそらくMySQLサーバーのホスト名。 これにサーバーの
稼働時間。

TやBなどのInnoDBモードを使用している場合、次の単語は「InnoDB」の後にいくつかあります。
画面のレンダリングに使用されるSHOWINNODBSTATUS出力に関する情報。 最初の言葉
InnoDBが計算に使用する最後のSHOWINNODBSTATUSからの秒数です
XNUMX秒あたりの統計。 次は、InnoDBかどうかを示すスマイリーフェイスです
出力は切り捨てられます。 スマイリーフェイスが:-)の場合、すべてが順調です。 切り捨てはありません。 A
:^ | トランザクションリストが非常に長いことを意味し、InnoDBは一部のみを出力しました
トランザクション。 最後に、眉をひそめている:-(出力が不完全であることを意味します。これはおそらく原因です
デッドロックに対して、大量のロック情報を出力します(「D:InnoDBデッドロック」を参照)。

次のXNUMXつの単語は、サーバーのXNUMX秒あたりのクエリ数(QPS)とスレッド数を示します
(接続)が存在します。 最後に、サーバーのバージョン番号が最後になります。

複数 SERVERS
複数のサーバーを監視している場合(「サーバー接続」を参照)、ステータス行は
個々のサーバーに関する詳細は表示されません。 代わりに、の名前が表示されます
アクティブな接続。 繰り返しますが、これらは指定した接続名であり、
サーバーのホスト名である可能性があります。 エラーのある接続の前には、
感嘆符。

サーバーのグループを監視している場合(「サーバーグループ」を参照)、ステータス行に次のように表示されます。
グループの名前。 グループ内のいずれかの接続にエラーがある場合、グループの名前は次のようになります。
その後に、エラーのない接続の一部が続きます。

innotopのエラー処理の詳細については、「エラー処理」を参照してください。

モニタリング A FILE
コマンドラインでファイル名を指定すると、innotopは次のサーバーに接続しません。
全て。 指定されたファイルのInnoDBステータス出力を監視し、それをデータとして使用します
ソース。 常に「ファイル」と呼ばれる単一の接続が表示されます。 そしてそれはできないので
サーバーに接続すると、監視しているサーバーが稼働している期間を特定できません。
そのため、innotopが実行を開始してからの時間としてサーバーの稼働時間を計算します。

サーバ アドミニストレーション


innotopは主にサーバーを監視および分析できるモニターですが、
また、サーバーにコマンドを送信します。 最も頻繁に役立つコマンドは、クエリを強制終了することです
スレーブを停止または開始します。

接続を強制終了するか、MySQLの新しいバージョンではクエリを強制終了できますが、
接続、「Q:クエリリスト」および「T:InnoDBトランザクション」モードから。 'k'を押して発行します
KILLコマンド、または「x」を使用してKILLQUERYコマンドを発行します。 innotopはあなたにプロンプ​​トを出します
強制終了するサーバーおよび/または接続ID(XNUMXつしかない場合はinnotopはプロンプトを表示しません
任意の入力に対して可能な選択)。 innotopは、最も長く実行されているクエリを事前に選択します。
最も古い接続。 'y'でコマンドを確認します。

「M:マスターモード」の「スレーブレプリケーションステータス」では、
それぞれ「a」キーと「o」キー。 これらのコマンドを一度に多くのスレーブに送信できます。
innotopは、STARTSLAVEまたはSTOPSLAVEのデフォルトコマンドを入力しますが、
実際にコマンドを編集して、SETGLOBALなどの必要なものを送信します
SQL_SLAVE_SKIP_COUNTER = 1は、スレーブが開始時にXNUMXつのbinlogイベントをスキップするようにします。

innotopに、スレーブが使用している最も早いbinlogを計算して、
マスターのマスターログをパージします。 これには「b」キーを使用します。 innotopはプロンプトを表示します
マスターでコマンドを実行し、そのマスターの接続名の入力を求めるプロンプトを表示します
スレーブ(innotopがこれを確実に判断する方法はありません)。 innotopは見つけます
これらのスレーブ接続で使用されている最小のbinlogであり、
マスターログをパージします。

サーバ CONNECTIONS


'@'を使用してサーバー接続を作成すると、innotopは一連の入力を要求します。
以下:

DSN DSNはデータソース名であり、DBIモジュールに渡される最初の引数です。
サーバーに接続するため。 通常は次の形式です

DBI:mysql :; mysql_read_default_group = mysql; host = HOSTNAME

このDSNはDBD :: mysqlドライバーに渡されるため、ドライバーの
「http:forthe」の「/search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm」にあるドキュメント
DSNでドライバーを渡すことができるすべてのオプションの正確な詳細。 あなたは読むことができます
DBIの詳細http://dbi.perl.org/docs/>、特に
<http://search.cpan.org/~timb/DBI/DBI.pm>.

mysql_read_default_group = mysqlオプションを使用すると、DBDドライバーがMySQLオプションを読み取ることができます
などのファイル 〜/ .my.cnf UNIX風のシステム。 これを使用して、指定を回避できます
接続のユーザー名またはパスワード。

InnoDBデッドロックテーブル
このオプションのアイテムは、意図的に作成するために使用できるテーブル名をinnotopに通知します。
小さなデッドロック(「D:InnoDBデッドロック」を参照)。 このオプションを指定する場合は、
テーブルが存在しないこと、およびそのinnotopがテーブルを作成および削除できることを確認します
InnoDBストレージエンジンを使用します。 次の場合は、デフォルトを安全に省略または受け入れることができます。
これを使用するつもりはありません。


innotopは、ユーザー名を指定するかどうかを尋ねてきます。 'y'と言うと、
ユーザー名の入力を求められます。 を指定するMySQLオプションファイルがある場合
ユーザー名、ユーザー名を指定する必要はありません。

ユーザー名は、デフォルトで、innotopを実行しているシステムのログイン名になります。

パスワード
innotopは、パスワードを指定するかどうかを尋ねてきます。 ユーザー名のように、
パスワードはオプションですが、保存するかどうかを尋ねる追加のプロンプトがあります
innotop構成ファイルのパスワード。 保存しない場合
構成ファイルのinnotopは、起動するたびにパスワードの入力を求めます。
innotop構成ファイルのパスワードは、暗号化されていないプレーンテキストで保存されます。
とにかく。

これらの質問への回答が終了したら、サーバーに接続する必要があります。 しかし
innotopは、単一のサーバーの監視に限定されていません。 多くのサーバーを定義できます
接続し、「@」キーを押して接続を切り替えます。 「間の切り替え」を参照してください。
接続」。

サーバ グループ


複数のMySQLインスタンスがある場合は、それらを「all」などの名前付きグループに入れることができます。
innotopがすべて一緒に監視できる「マスター」と「スレーブ」。

'#'キーを使用して監視するグループを選択し、Tabキーを押して次の操作を行うことができます。
次のグループに切り替えます。 現在グループを監視していない場合は、Tabキーを押します
最初のグループを選択します。

グループを作成するには、「#」キーを押して新しいグループの名前を入力してから、
グループに含める接続の名前。

スイッチング BETWEEN CONNECTIONS


innotopを使用すると、監視しているサーバーをすばやく切り替えることができます。 最も基本的な方法は
'@'キーを押して、使用する接続の名前を入力します。 この
設定はモードごとであるため、各モードでさまざまな接続を監視でき、innotop
選択した接続を記憶します。

「n」キーを使用すると、アルファベット順に「次の」接続にすばやく切り替えることができます。
サーバーグループを監視している場合(「サーバーグループ」を参照)、これは最初のサーバーグループに切り替わります
接続。

多くの接続名を入力することもでき、innotopはそれらからデータをフェッチして表示します
全て。 「server1server2」のように、接続名をスペースで区切るだけです。
繰り返しますが、存在しない接続の名前を入力すると、innotopはプロンプトを表示します
接続情報については、接続を作成してください。

複数の接続を一度に監視するもうXNUMXつの方法は、サーバーグループを使用することです。 使用できます
アルファベット順で「次の」グループに切り替えるためのTabキー、またはそうでない場合
グループを監視すると、TABは最初のグループに切り替わります。

innotopは接続から並列にデータをフェッチしないため、大規模なデータを監視している場合
グループまたは多くの接続では、ティック間の遅延が増加する場合があります。

複数の接続を監視すると、innotopのステータスバーが変化します。 「INNOTOP」を参照してください
状態"。

ERROR 取り扱い


単一の接続を監視する場合、エラー処理はそれほど重要ではありませんが、重要です
アクティブな接続が多数ある場合。 クラッシュしたサーバーや失われた接続はすべきではありません
innotopをクラッシュします。 その結果、エラーが発生した場合でもinnotopは実行を継続します。 それ
エラーが発生した接続からの情報は表示されません。 のため
これ、innotopの振る舞いはあなたを混乱させるかもしれません。 これは機能であり、バグではありません。

innotopは、エラーが発生する可能性があるため、エラーのある接続のクエリを続行しません。
特にエラーが接続の問題であり、
長時間のタイムアウトが発生します。 代わりに、innotopは接続をときどき再試行して、
エラーはまだ存在します。 もしそうなら、それは将来のある時点まで待ちます。 待つ
フィボナッチ数列のように時間はダニで増加するため、時間として試行される頻度は少なくなります
パス。

で発行されたSQLコマンドが原因で、特定のモードでのみエラーが発生する可能性があるため
これらのモードでは、innotopはどのモードがエラーを引き起こしたかを追跡します。 に切り替えると
別のモードでは、innotopは待機する代わりに接続を再試行します。

デフォルトでは、innotopは最初のテーブルの下部に赤いテキストで問題を表示します
画面上。 この動作は「show_cxn_errors_in_tbl」で無効にできます
デフォルトで有効になっている構成オプション。 「デバッグ」オプションが有効になっている場合、
innotopは、最初のテーブルだけでなく、すべてのテーブルの下部にエラーを表示します。 で、もし
「show_cxn_errors」が有効になっている場合、innotopはエラーテキストをSTDOUTにも出力します。 エラー
メッセージは、モードとモードによっては、エラーの原因となったモードでのみ表示される場合があります。
innotopがその接続のクエリを回避しているかどうか。

非対話型 OPERATION


innotopは非インタラクティブモードで実行できます。その場合、innotopはから完全に制御されます。
構成ファイルとコマンドラインオプション。 非インタラクティブでinnotopを開始するには
モードの場合は、L "<-nonint">コマンドラインオプションを指定します。 これにより、innotopの動作が変更されます。
次の方法:

・特定のPerlモジュールがロードされていません。 Term :: Readlineは、innotop以降、ロードされていません
インタラクティブにプロンプ​​トを表示しません。 Term :: ANSIColorおよびWin32 :: Console :: ANSIモジュールは
読み込まれていない。 innotopがプロンプトを表示する必要がある場合があるため、Term :: ReadKeyは引き続き使用されます
起動時の接続パスワード。

・innotopは、ティックごとに画面をクリアしません。

・innotopは、構成ファイルへの変更を保持しません。

・「-count」が指定され、innotopがインクリメンタルモードの場合(「status_inc」および
"--inc")、innotopは実際には、指定された回数よりもXNUMX回多く更新されるため、印刷できます。
増分統計。 これにより、最初のティック中の出力が抑制されるため、innotopが
ハングしているように見えます。

・innotopは、各モードの最初のテーブルのみを表示します。 これは、出力ができるようにするためです
awkやsedなどの他のコマンドラインユーティリティで簡単に処理できます。 変更するには
各モードで表示されるテーブルについては、「テーブル」を参照してください。 「Q:クエリリスト」モードなので
重要なのは、innotopが「q_header」テーブルを自動的に無効にすることです。 これにより、確実に
q_headerを表示するようにinnotopを構成している場合でも、「processlist」テーブルを参照してください。
インタラクティブ操作中のテーブル。 同様に、「T:InnoDB Transactions」モードでは、
「t_header」テーブルは抑制されているため、「innodb_transactions」テーブルのみが表示されます。

・すべての出力は、空白で列揃えされるのではなく、タブで区切られ、
innotopは、画面一杯だけを印刷するのではなく、各テーブルの内容全体を印刷します
一度に。

・innotopは、すべてのティックではなくXNUMX回だけ列ヘッダーを出力します(「hide_hdr」を参照)。
innotopは、テーブルのキャプションを出力しません(「display_table_captions」を参照)。 innotopは保証します
出力に空の行はありません。

・innotopは、通常は一部を短縮する「短縮」変換を尊重しません
人間が読める形式の数字。

・innotopはステータス行を出力しません(「INNOTOPSTATUS」を参照)。

構成


innotopに関するほぼすべてが構成可能です。 ほとんどのものはで変更することが可能です
組み込みコマンドですが、構成ファイルを編集することもできます。

innotopの実行中に、「$」キーを押して構成編集ダイアログを表示します。
別のキーを押して、編集するデータのタイプを選択します。

S:ステートメントのスリープ時間
SQLステートメントのスリープ遅延を編集します。これにより、指定された量のinnotopが一時停止します。
ステートメントを実行してからの時間。 それぞれの定義については、「SQLステートメント」を参照してください。
ステートメントとそれが何をするか。 デフォルトでは、innotopはステートメントの後に遅延しません。

この機能が含まれているため、監視によって引き起こされる副作用をカスタマイズできます
あなたのサーバー。 効果は見られないかもしれませんが、一部の無実のユーザーはそれに気づいています
InnoDBが有効になっている非常に高負荷の特定のMySQLバージョンは、通常よりも時間がかかります
SHOW GLOBALSTATUSを実行します。 innotopがSHOWFULLPROCESSLISTをすぐに呼び出す場合
その後、プロセスリストには、マシンが実際に平均するよりも多くのクエリが含まれます
任意の瞬間。 SHOWGLOBALを呼び出した後に一時停止するようにinnotopを構成する
STATUSはこの影響を軽減します。

スリープ時間は、構成ファイルの「stmt_sleep_times」セクションに保存されます。
ハードウェアの制限により、フラクショナルセカンドスリープがサポートされます。

c:列を編集する
表示されたテーブルのXNUMXつでテーブルエディタを起動します。 「テーブルエディタ」を参照してください。 アン
構成ダイアログに入らずにテーブルエディタを起動する別の方法は、
'^'キーを使用します。

g:一般的な構成
構成エディターを開始して、グローバルおよびモード固有の構成を編集します
変数(「モード」を参照)。 innotopは、変数の中から変数を選択するように促します。
現在のモードに応じて、グローバルおよびモード固有のもの。

k:行の色付け規則
表示されたテーブルのXNUMXつで行の色付けルールエディタを起動します。 「色」を参照してください
詳細については。

p:プラグインを管理する
プラグイン構成エディターを起動します。 詳細は「プラグイン」をご覧ください。

s:サーバーグループ
サーバーグループを作成および編集できます。 「サーバーグループ」を参照してください。

t:表示されるテーブルを選択します
このモードで表示するテーブルを選択できます。 「モード」および「テーブル」を参照してください。

CONFIGURATION FILE


innotopのデフォルトの構成ファイルの場所は$ HOME /.innotopと
/etc/innotop/innotop.confであり、この順序で検索されます。 最初の場合
構成ファイルが存在する場合、XNUMX番目は処理されません。 それらはで上書きすることができます
「--config」コマンドラインオプション。 手で安全に編集できますが、innotopは読み取ります
起動時の構成ファイル。読み取り専用が0に設定されている場合は、再度書き込みます。
それが終了するとき。 したがって、読み取り専用が0に設定されている場合、innotop中に手動で行った変更はすべて
実行中は失われます。

innotopは、構成全体を構成ファイルに保存しません。 それは巨大です
メモリにのみ保持されるデフォルトの構成値のセット、および構成
ファイルはこれらのデフォルトのみを上書きします。 デフォルト設定をカスタマイズすると、innotop
通知し、カスタマイズをファイルに保存します。 これにより、ファイルサイズが小さくなります。
編集が簡単になり、アップグレードも簡単になります。

構成ファイルはデフォルトで読み取り専用です。 これは「--write」で上書きできます。 見る
「読み取り専用」。

構成ファイルは、INIファイルのようにセクションに配置されます。 各セクションが始まります
[section-name]で終わり、[/ section-name]で終わります。 各セクションのエントリには、
保存する必要のあるデータに応じて異なる構文。 コメントを入れることができます
ファイル; #文字で始まる行はコメントです。 innotopは読み取りません
コメントなので、終了時にファイルに書き戻されません。 読んだコメント-
ただし、構成ファイルのみが引き続き役立ちます。

ファイルの最初の行は、innotopのバージョン番号です。 これにより、innotopは
ファイル形式には下位互換性がなく、ファイル形式を破壊することなくスムーズにアップグレードできます。
カスタマイズされた構成。

次のリストは、構成ファイルの各セクションとそのデータについて説明しています。
含まれています。

一般的な
'general'セクションには、グローバル構成変数と、
モード固有であるが、他のセクションには属さない。 構文は単純です
key =値リスト。 innotopは、ファイルの編集に役立つように、各値の上にコメントを書き込みます
手で。

S_func
Sモードの表示を制御します(「S:変数とステータス」を参照)。 gの場合、値は
グラフ化; sの場合、値はvmstatのようになります。 pの場合、値はピボットテーブルにあります。

S_セット
「S:変数とステータス」モードで表示する変数のセットを指定します。 見る
「可変セット」。

auto_wipe_dl
大きなデッドロックに気付いたときに自動的にワイプするようにinnotopに指示します。
これが発生すると、わずかな遅延が発生する場合があります。 次のダニで、あなたは
通常、大きなデッドロックによって切り捨てられていた情報が表示されます。

文字セット
「no_ctrl_char」を通過できる文字の種類を指定します
変身。 これにより、印刷できない文字が端末を混乱させるのを防ぎます
画像などのバイナリデータを含むクエリを監視する場合。

デフォルトは 'ascii'で、通常のASCII以外のものはすべて
制御文字。 その他の許容値は「unicode」と「none」です。 'なし'
すべての文字を制御文字と見なします。これは折りたたみに役立ちます。
クエリのすべてのテキストフィールド。

cmd_filter
これは、「C:コマンドの概要」モードで変数をフィルタリングするプレフィックスです。

カラー
ターミナルカラーリングが許可されているかどうか。

cxn_timeout
MySQLバージョン4.0.3以降では、この変数は接続の設定に使用されます
タイムアウトになるため、MySQLは、しばらく使用されない場合、接続を閉じません。
これは、接続が特定のモードで監視されていないために発生する可能性があります。
例。

debug
このオプションは、より詳細なエラーを有効にし、一部のinnotopをより厳密にします。
場所。 フィルタやその他のユーザー定義コードのデバッグに役立ちます。 また
クラッシュが発生したときに、innotopが「debugfile」に多くの情報を書き込むようにします。

デバッグファイル
クラッシュが発生したときにinnotopが情報を書き込むファイル。 見る
「ファイル」。

ディスプレイテーブルキャプション
innotopは、ほとんどのテーブルの上にテーブルキャプションを表示します。 この変数はまたはを抑制します
すべてのテーブルのキャプションをグローバルに表示します。 一部のテーブルは、
これをオーバーライドするhide_captionプロパティ。

全体的な
GLOBAL変数とステータスを表示するかどうか。 innotopはこれを実行しようとするだけです
SHOWVARIABLESおよびSHOWSTATUSのGLOBALオプションをサポートするサーバー。 の
一部のMySQLバージョンでは、これを行うために特定の特権が必要です。 あなたが持っていない場合
それらの場合、innotopは変数とステータスデータをフェッチできなくなります。 この
構成変数を使用すると、innotopを実行して、可能なデータをフェッチすることもできます。
昇格された特権なし。

GLOBALが許可されなかった状況を見つけたり再現したりすることはできなくなりましたが、私は
XNUMXつあったことを知っています。

グラフ文字
「S:変数とステータス」モードでグラフを描画するときに使用する文字を定義します。

header_highlight
列ヘッダーを強調表示する方法を定義します。 これは、Term :: ANSIColorが
利用可能。 有効な値は「太字」と「下線」です。

hidden_​​hdr
列ヘッダーをグローバルに非表示にします。

インターバル
innotopがデータを更新する間隔(ティック)。 間隔は
ティック間のスリープ時間として実装されるため、実際の間隔は変化します
innotopがデータをフェッチしてレンダリングするのにかかる時間によって異なります。

この変数は、XNUMX秒の小数部を受け入れます。

モード
innotopが開始するモード。 許可される引数は、
インタラクティブにモードを選択するキーを押します。 「モード」を参照してください。

桁数
小数とパーセントで表示する桁数。 この変数の範囲
は0〜9で、「S:変数とステータス」モードから直接設定できます。
'+'および '-'キー。 「set_precision」、「shorten」、および「percent」で使用されます
変換。

num_status_sets
ピボットされた「S:変数と変数」に表示するステータス変数のセットの数を制御します
ステータス」モード。また、innotopが保持する古い変数セットの数も制御します。
そのメモリ内にあるため、この変数が大きいほど、innotopが使用するメモリが多くなります。

プラグインディレクトリ
プラグインを見つけることができる場所を指定します。 デフォルトでは、innotopはプラグインを
innotop構成ディレクトリの「plugins」サブディレクトリ。

読み取り専用
構成ファイルが読み取り専用かどうか。 これはインタラクティブに設定できません。

show_cxn_errors
STDOUTへのinnotop印刷接続エラーを作成します。 「エラー処理」を参照してください。

show_cxn_errors_in_tbl
画面上の最初のテーブルの行として、innotopディスプレイ接続エラーを作成します。 見る
"エラー処理"。

show_percent
「パーセント」変換によって返された値の後に「%」文字を追加します。

show_statusbar
ディスプレイにステータスバーを表示するかどうかを制御します。 「INNOTOPSTATUS」を参照してください。

スキップ_innodb
サーバーにInnoDBがない場合、SHOW INNODBSTATUSのフェッチを無効にします
有効になっていて、innotopがそれをフェッチしようとしないようにします。 これも便利です
SUPER特権がない場合は、SHOW INNODBSTATUSを実行するために必要です。

status_inc
ステータス変数の絶対値を表示するか、増分値を表示するか。 増分
値は、innotopがそのために見た最後の値からのオフセットとして計算されます
変数。 これはグローバル設定ですが、おそらくでモード固有になります
いくつかのポイント。 今のところ、それは少し一貫性のない名誉を与えられています。 一部のモードは支払いません
それに注意してください。

プラグイン
このセクションには、アクティブなプラグインのパッケージ名のリストがあります。 プラグインが存在する場合、
innotopはそれをアクティブにします。 詳細については、「プラグイン」を参照してください。

フィルター
このセクションには、ユーザー定義のフィルターが含まれます(「フィルター」を参照)。 各行は次の形式です
filter_name = text = 'filter text' tbls = 'tablelist'。

フィルタテキストは、サブルーチンのコードのテキストです。 テーブルリストはのリストです
フィルタを適用できるテーブル。 デフォルトでは、ユーザー定義のフィルターが
それらが作成されたテーブルですが、編集することで手動でオーバーライドできます
構成ファイルの定義。

アクティブフィルター
このセクションには、各テーブルでアクティブなフィルターが格納されます。 各行は
table_name = filter_listの形式。

tbl_meta
このセクションには、ユーザー定義またはユーザーカスタマイズの列が格納されます(「列」を参照)。 各
行の形式はcol_name = propertyで、プロパティは
name = quoted-valueリスト。

接続
このセクションには、定義したサーバー接続が含まれます。 各行は
形式name = properties。プロパティはname = valueリストです。 プロパティ
は自明であり、特別に扱われるのは「パス」だけです。
'savepass'が設定されている場合にのみ存在します。 構成ファイルのこのセクションは
DSN、ユーザー名、またはパスワードのコマンドラインオプションが使用されている場合はスキップされます。 「サーバー」を参照してください
接続」。

active_connections
このセクションには、各モードでアクティブな接続のリストがあります。 各行は
mode_name = connection_listの形式で。

サーバーグループ
このセクションには、サーバーグループが含まれます。 各行の形式はname = connection_listです。
「サーバーグループ」を参照してください。

アクティブサーバーグループ
このセクションには、各モードでアクティブなサーバーグループのリストがあります。 各行は
mode_name = server_groupの形式で。

max_values_seen
このセクションは、変数に見られる最大値を保持します。 これは、スケーリングに使用されます
「S:変数とステータス」モードのグラフ。 各行の形式はname = valueです。

アクティブな列
このセクションには、テーブルの列リストがあります。 各行は次の形式です
tbl_name = column_list。 「列」を参照してください。

並べ替え列
このセクションには、ソート定義が含まれています。 各行は次の形式です
tbl_name = column_list。 列の前に「-」が付いている場合、その列は降順でソートされます。
「ソート」を参照してください。

可視テーブル
このセクションでは、各モードで表示されるテーブルを定義します。 各行は
format mode_name = table_list。 「表」を参照してください。

変数セット
このセクションでは、「S:ステータスと変数」モードで使用する変数セットを定義します。 各行
name = variable_listの形式です。 「変数セット」を参照してください。


このセクションでは、色付けルールを定義します。 各行は次の形式です
tbl_name = property_list。 「色」を参照してください。

stmt_sleep_times
このセクションには、ステートメントのスリープ時間が含まれています。 各行は次の形式です
statement_name = sleep_time。 「S:ステートメントのスリープ時間」を参照してください。

グループ化
このセクションには、テーブルgroup_by式の列リストが含まれています。 各行は
形式tbl_name = column_list。 「グループ化」を参照してください。

カスタマイズ


innotopを大幅にカスタマイズできます。 たとえば、次のことができます。

・表示するテーブルとその順序を選択します。

・これらのテーブルにある列を選択し、新しい列を作成します。

・組み込みのフィルター、ユーザー定義のフィルター、およびクイックフィルターを使用して、表示する行をフィルター処理します。
フィルタ

・行を並べ替えて、重要なデータを最初に配置するか、関連する行をグループ化します。

・行を色で強調表示します。

・列の配置、幅、フォーマットをカスタマイズし、変換を適用します
列に移動して、値の一部を抽出したり、必要に応じて値をフォーマットしたりします(
たとえば、多数を使い慣れた単位に短縮します)。

・必要に応じてデータを抽出して組み合わせるための独自の式を設計します。 これはあなたに
無制限の柔軟性。

次のセクションでは、これらすべておよびその他について説明します。

TABLES
テーブルはあなたが期待するものです:列のコレクション。 他にもいくつかのプロパティがあります。
キャプションなど。 フィルタ、並べ替えルール、および色付けルールはテーブルに属し、
後のセクションで説明します。

内部的には、テーブルメタデータは%tbl_metaと呼ばれるデータ構造で定義されます。 このハッシュ
すべての組み込みテーブル定義を保持します。これには、
innotop。 メタデータには、キャプション、ユーザーがカスタマイズした列のリスト、
列のリスト、表示されている列のリスト、フィルターのリスト、カラールール、並べ替え列
リスト、ソート方向、およびテーブルのデータソースに関するいくつかの情報。 このほとんど
テーブルエディタを介してカスタマイズ可能です(「テーブルエディタ」を参照)。

'$'キーを押すと、表示するテーブルを選択できます。 「モード」および「テーブル」を参照してください。

テーブルのライフサイクルは次のとおりです。

・各テーブルは、ハッシュの配列であるデータソースで始まります。 以下を参照してください
データソースの詳細。

・データソースの各要素は、ファイナルテーブルの行になります。

・データソースの各要素について、innotopはソースから値を抽出し、
行を作成します。 この行は別のハッシュであり、後の手順で$ setと呼ばれます。
innotopが抽出する値は、テーブルの列によって決定されます。 各列には
式からコンパイルされた抽出サブルーチン(「式」を参照)。 結果として
行は、キーの名前が列名と同じであるハッシュです。

・innotopは行をフィルタリングし、表示する必要のない行を削除します。 見る
「フィルター」。

・innotopは行をソートします。 「ソート」を参照してください。

・innotopは、指定されている場合、行をグループ化します。 「グループ化」を参照してください。

・innotopは行を色付けします。 「色」を参照してください。

・innotopは、各行の列値を変換します。 「変換」を参照してください。

・innotopはオプションで行をピボットし(「PIVOTING」を参照)、次にそれらをフィルタリングしてソートします。

・innotopは、行をテーブルとしてフォーマットおよび正当化します。 このステップでは、innotopが適用されます
配置、最大値、最小値など、列の値をさらにフォーマットする
幅。 innotopは、最終的なエラーチェックも行い、次の理由によるクラッシュがないことを確認します。
未定義の値。 次に、innotopは、指定されている場合はキャプションを追加し、テーブルは次の準備ができています。
印刷します。

上記のように、テーブルがピボットされている場合、ライフサイクルはわずかに異なります。 明確にするために、
テーブルがピボットされている場合、プロセスは抽出、グループ化、変換、ピボット、フィルター、並べ替え、
作成。 ピボットされていない場合、プロセスは抽出、フィルタリング、並べ替え、グループ化、色付け、
変換、作成します。 この少し複雑なプロセスは、SQLにそれほどうまくマッピングされませんが、
ピボットは物事をかなり完全に複雑にします。 大まかに言えば、フィルタリングと並べ替え
あなたが期待するかもしれないように最終結果をもたらすために必要なだけ遅く、しかし早くも
効率のために可能。

各組み込みテーブルについて、以下で説明します。

Adaptive_hash_index
InnoDBのアダプティブハッシュインデックスに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

バッファプール
InnoDBのバッファープールに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

cmd_summary
加重ステータス変数を表示します。 データソース:「STATUS_VARIABLES」。

デッドロック_ロック
最後に検出されたデッドロックによってどのロックが保持および待機されたかを示します。 データ
ソース:「DEADLOCK_LOCKS」。

デッドロック_トランザクション
最後に検出されたデッドロックに関係するトランザクションを表示します。 情報源:
「DEADLOCK_TRANSACTIONS」。

説明します
EXPLAINの出力を表示します。 データソース:「EXPLAIN」。

ファイル_io_その他
InnoDBのファイルおよびI / O操作に関するデータを表示します。 情報源:
「STATUS_VARIABLES」。

fk_error
InnoDBの最後の外部キーエラーに関するさまざまなデータを表示します。 情報源:
「STATUS_VARIABLES」。

innodb_locks
InnoDBロックを表示します。 データソース:「INNODB_LOCKS」。

innodb_transactions
InnoDBの現在のトランザクションに関するデータを表示します。 情報源:
「INNODB_TRANSACTIONS」。

挿入バッファー
InnoDBの挿入バッファーに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

io_threads
InnoDBのI / Oスレッドに関するデータを表示します。 データソース:「IO_THREADS」。

ログ統計
InnoDBのロギングシステムに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

マスターステータス
レプリケーションマスターのステータスを表示します。 データソース:「STATUS_VARIABLES」。

open_tables
開いているテーブルを表示します。 データソース:「OPEN_TABLES」。

ページ統計
InnoDBページの統計を表示します。 データソース:「STATUS_VARIABLES」。

保留中の_io
InnoDBの保留中のI / O操作を表示します。 データソース:「STATUS_VARIABLES」。

プロセスリスト
現在のMySQLプロセス(スレッド/接続)を表示します。 データソース:「PROCESSLIST」。

q_header
さまざまなステータス値を表示します。 データソース:「STATUS_VARIABLES」。

行操作その他
InnoDBの行操作に関するデータを表示します。 データソース:「STATUS_VARIABLES」。

行操作
InnoDBの行操作に関するデータを表示します。 データソース:「STATUS_VARIABLES」。

セマフォ
InnoDBのセマフォとミューテックスに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

スレーブ_io_ステータス
スレーブI / Oスレッドに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

スレーブ_SQL_ステータス
スレーブSQLスレッドに関するデータを表示します。 データソース:「STATUS_VARIABLES」。

t_header
さまざまなInnoDBステータス値を表示します。 データソース:「STATUS_VARIABLES」。

var_status
ユーザーが構成可能なデータを表示します。 データソース:「STATUS_VARIABLES」。

待ち配列
InnoDBのOS待機アレイに関するデータを表示します。 データソース:「OS_WAIT_ARRAY」。

COLUMNS
列はテーブルに属します。 '^'キーを押すと、テーブルの列を選択できます。
「TABLEEDITOR」を起動し、列を選択して編集できるようにします。 内側から「e」を押す
テーブルエディタを使用すると、列のプロパティを編集できます。

・hdr:列ヘッダー。 これは、テーブルの最初の行に表示されます。

・ちょうど:正当化。 '-'は左寄せを意味し、 ''は右寄せを意味します。
printfフォーマットコード付き(偶然ではありません)。

・dec:列を小数点にさらに揃えるかどうか。

・num:列が数値かどうか。 これは、値の並べ替え方法に影響します(字句または
数値的に)。

・ラベル:列に関する小さなメモ。ユーザーを支援するダイアログに表示されます。
列を選択します。

・src:innotopがソースから列のデータを抽出するために使用する式(を参照)
「データソース」)。 式の詳細については、「式」を参照してください。

・minw:最小表示幅を指定します。 これにより、ディスプレイが安定します。
データが頻繁に変更されている場合に読みやすくなります。

・maxw:minwに似ています。

・trans:列変換のリスト。 「変換」を参照してください。

・agg:集計関数。 「グループ化」を参照してください。 デフォルトは「最初」です。

・aggonly:テーブルでグループ化が有効になっている場合にのみ列を表示するかどうかを制御します
(「グループ化」を参照)。 デフォルトでは、これは無効になっています。 これは、列が常に
グループ化が有効かどうかに関係なく、デフォルトで表示されます。 列のaggonlyが設定されている場合
trueの場合、テーブルでグループ化を切り替えると列が表示されます。 いくつかの列
「processlist」や「innodb_transactions」のカウント列など、このように設定されます。
したがって、グループ化が有効になっていない場合はカウントが表示されませんが、有効になっている場合はカウントが表示されます。

FILTERS
フィルタは、表示から行を削除します。 これらはSQLのWHERE句のように動作します。
innotopにはいくつかの組み込みフィルターがあり、非アクティブなどの無関係な情報を削除します
クエリですが、独自に定義することもできます。 innotopでは、クイックフィルターを作成することもできます。
これは構成ファイルに保存されず、すばやく表示するための簡単な方法です。
一部の行のみ。

任意のテーブルでフィルターを有効または無効にできます。 '%'キーを押します(ニーモニック:%looks
XNUMXつの円の間で線がフィルタリングされるようなものです)そして、どのテーブルにするかを選択します
求められた場合は、フィルターします。 次に、可能なフィルターのリストとフィルターのリストが表示されます
そのテーブルに対して現在有効になっています。 適用するフィルターの名前を入力して、を押します
入力します。

ユーザー定義の FILTERS

存在しない名前を入力すると、innotopはフィルターを作成するように促します。
フィルタは、Perlを知っていれば簡単に作成でき、知らなければ難しくはありません。 あなたがしていること
行を表示する必要がある場合にtrueを返すサブルーチンを作成しています。 行は
$ setとしてサブルーチンに渡されるハッシュ参照。

たとえば、プロセスリストテーブルをフィルタリングして、次のクエリのみが表示されるようにするとします。
XNUMX分以上実行されています。 フィルタの新しい名前を入力します。
サブルーチン本体の入力を求められたら、Tabキーを押して端末のオートコンプリートを開始します。
「processlist」テーブルに列の名前が表示されます(innotopは通常、
オートコンプリートリストを手伝ってください)。 'time'列でフィルタリングします。 次のように入力します
テキスト "$ set-> {time}> 300"は、クエリがXNUMX分以上経過したときにtrueを返します。
それはあなたがする必要があるすべてです。

つまり、入力しているコードは、次のように見える暗黙のコンテキストに囲まれています。
このような:

サブフィルター{
my($ set)= @_;
#ここにあなたのコード
}

フィルタが機能しない場合、または他の何かが突然異なる動作をする場合は、
フィルタでエラーが発生し、innotopがサイレントにエラーをキャッチしています。 試す
「デバッグ」を有効にして、代わりにinnotopがエラーをスローするようにします。

クイックフィルター

innotopのクイックフィルターは、持続しない一時フィルターを作成するためのショートカットです。
innotopを再起動したとき。 クイックフィルターを作成するには、「/」キーを押します。 innotopは
列名とフィルターテキストの入力を求めるプロンプトが表示されます。 繰り返しになりますが、オートコンプリートを使用できます
列名。 フィルタテキストは、「検索」するテキストだけにすることができます。 にとって
たとえば、productsテーブルを参照するクエリで「processlist」テーブルをフィルタリングするには、
「/」と入力してから「infoproduct」と入力します。

フィルタテキストは、実際には任意のPerl正規表現にすることができますが、もちろんリテラルです。
'product'のような文字列は、正規表現として正常に機能します。

舞台裏では、innotopはクイックフィルターを特別にタグ付けされたフィルターにコンパイルします。
それ以外は他のフィルターと同じです。 構成ファイルに保存されないだけです。

クイックフィルターをクリアするには、「\」キーを押すと、innotopがそれらをすべて一度にクリアします。

並べ替え
innotopには、最も重要な行を先頭に並べ替えるための適切な組み込みのデフォルトがあります。
テーブル。 innotopの他のものと同様に、テーブルの並べ替え方法をカスタマイズできます。

並べ替えダイアログを開始するには、「^」キーを使用して「TABLE EDITOR」を開始し、次の場合はテーブルを選択します。
必要に応じて、「s」キーを押してください。 並べ替えに使用できる列のリストが表示されます
式と現在のソート式(存在する場合)。 列のリストを入力してください
並べ替えてEnterキーを押します。 逆ソートする場合は、列名の前に
マイナス記号。 たとえば、列aを昇順に並べ替える場合は、列b
降順で、「a-b」と入力します。 必要な列の前に+を明示的に追加することもできます
昇順で並べ替えますが、必須ではありません。

一部のモードには、このダイアログを直接開き、すばやく逆ソートするためのキーがマップされています
方向。 押す '?' いつものように、どのキーがどのモードでもマップされているかを確認します。

グルーピング
innotopは、行をグループ化または集約できます(これらの用語は同じ意味で使用されます)。 この
SQL GROUPBY句と非常によく似ています。 特定の列でグループ化するように指定できます。
または、何も指定しない場合は、行のセット全体がXNUMXつのグループとして扱われます。 これは
これまでのSQLと非常に似ていますが、SQLとは異なり、グループ化されていない列を選択することもできます。 innotop
実際にはすべての列を集約します。 グループ化関数を明示的に指定しない場合は、
デフォルトは「first」です。 これは基本的に便利なので、指定する必要はありません
結果に必要なすべての列の集計関数。

'='キーを使用すると、テーブルのグループ化をすばやく切り替えることができます。これにより、集計が切り替わります。
財産。 このプロパティは構成ファイルに保持されません。

テーブルがグループ化される列は、そのgroup_byプロパティで指定されます。 いつ
グループ化をオンにすると、innotopはgroup_by列をテーブルの左端に配置します。
それらが表示されることになっていない場合でも。 表示されている残りの列はに表示されます
それらの後に注文します。

XNUMXつのテーブルには、デフォルトのgroup_byリストとカウント列が組み込まれています: "processlist"と
「innodb_transactions」。 グループ化は接続とステータスによって行われるため、すぐに確認できます
監視している各サーバーで特定のステータスにあるクエリまたはトランザクションの数。
時間列は合計として集計されます。 他の列はデフォルトの「最初」のままです
集約。

デフォルトでは、「S:変数とステータス」モードで表示されるテーブルもグループ化を使用するため、次のことができます。
多くのサーバー間で変数とステータスを監視します。 のデフォルトの集計関数
このモードは「avg」です。

有効なグループ化関数は、%agg_funcsハッシュで定義されています。 それらは含まれています

最初の
グループの最初の要素を返します。

カウント
未定義の要素を含む、グループ内の要素の数を返します。
SQLのCOUNT(*)。

avgグループ内の定義された要素の平均を返します。

sumグループ内の要素の合計を返します。

これは、職場でのグループ化の例です。 数百の非常にビジーなサーバーがあるとします
開いている接続の数、および接続の数がどのステータスにあるかを確認する必要があります。 使用する
組み込みのグループ化ルールでは、「Q」を押して「Q:クエリリスト」モードに入ることができます。 '='を押します
グループ化を切り替えるには(必要に応じて、プロンプトが表示されたら「プロセスリスト」テーブルを選択します)。

ディスプレイは次のようになります。

クエリリスト(ヘルプは?)localhost、32:33、0.11 QPS、1 thd、5.0.38-log

CXN Cmd CntIDユーザーホスト時間クエリ
localhostクエリ49 webusr localhost 12933:19 SELECT * FROM
localhost送信Da23 2383 webusr localhost 12:43 SELECT col1、
localhostスリープ120 webusr localhost 140:5:18
localhost統計12 webusr localhost 19213:01 SELECT * FROM

それは実際にはかなり気になる写真です。 アイドル状態の接続がたくさんあります(スリープ)、
クエリを実行するいくつかの接続(クエリとデータの送信)。 大丈夫ですがあなたは
また、統計ステータスも多く、XNUMX分以上を費やしています。 つまり、
クエリオプティマイザは、ステートメントを最適化するのに非常に苦労しています。 何かが
間違い; 通常、クエリを最適化するには数ミリ秒かかります。 あなたは見たことがないかもしれません
接続をまとめて見なかった場合は、このパターン。 (これは作り上げです
例ですが、実際に発生する可能性があります)。

パイボッティング
innotopは、のピボットテーブルと同様に、よりコンパクトな表示のためにテーブルをピボットできます。
スプレッドシート(​​クロス集計とも呼ばれます)。 テーブルをピボットすると、列が行になります。 推定
この表から始めます。

fooバー
=== ===
1 3
2 4

ピボットすると、テーブルは次のようになります。

名前set0set1
==== ==== ====
フー 1 2
バー3

妥当な結果を得るには、ピボットだけでなくグループ化も必要になる場合があります。 現在innotop
これは、「S:変数とステータス」モードで実行されます。

COLORS
デフォルトでは、innotopは行を色で強調表示するため、どの行がどの行であるかが一目でわかります。
より重要。 色付けルールをカスタマイズして、任意のテーブルに独自のルールを追加できます。
'^'キーでテーブルエディタを開き、必要に応じてテーブルを選択し、 'o'を押して開きます
カラーエディタダイアログ。

カラーエディタダイアログには、テーブルに適用されているルールが順番に表示されます。
評価されました。 各行は各ルールに対して評価され、ルールがその行と一致するかどうかが確認されます。 もしも
その場合、行は指定された色になり、それ以上のルールは評価されません。 ルール
次のようになります。

状態eqロックされた黒on_red
cmdeqスリープホワイト
ユーザーeqシステムユーザーホワイト
cmdeqコネクトホ​​ワイト
cmd eq ビンログ ダンプ ホワイト
時間> 600赤
時間> 120黄色
時間> 60緑
時間> 30シアン

これは、「processlist」テーブルのデフォルトのルールセットです。 優先順位の高い順に、これら
ルールにより、ロックされたクエリが赤の背景に黒くなり、接続が「グレーアウト」されます。
レプリケーションとスリープクエリ、および実行時にクエリをシアンから赤に変更します
より長いです。

(何らかの理由で、ANSIカラーコード「白」は実際には薄い灰色です。端末の
表示は異なる場合があります。 あなたが好きな色を見つけるために実験してください)。

キーストロークを使用してルールを上下に移動し、ルールの優先順位を並べ替えることができます。 君
ルールを削除して新しいルールを追加することもできます。 新しいルールを追加すると、innotopはプロンプトを表示します
列、比較の演算子、列を比較するための値、
ルールが一致する場合に割り当てる色。 それぞれにオートコンプリートとプロンプトがあります
ステップ。

XNUMX番目のステップの値は正しく引用する必要があります。 innotopは引用しようとしません
値を文字列として扱うべきか、それとも
番号。 たとえば最初のように、列を文字列と比較する場合
上記のルールでは、引用符で囲まれた「Locked」と入力する必要があります。 エラーメッセージが表示された場合
ベアワードについては、おそらく何かを引用する必要があります。

表現
式は、innotopの仕組みの中核であり、拡張を可能にするものです。
あなたが望むようにinnotop。 「TABLES」で説明されているテーブルのライフサイクルを思い出してください。 式は
最初のステップで使用され、データソースから値を抽出して行を形成します。

これは、各列のサブルーチンを呼び出し、ソースデータセットを渡すことによって行われます。
現在の値のセット、および以前の値のセット。 これらはすべて必要なので、
サブルーチンは、このティックと前のティックの差などを計算できます
ダニ。

セットからデータを抽出するサブルーチンは、式からコンパイルされます。 この
値に名前を付けて列を埋めるよりもはるかに強力です。
必要なデータから列の値を計算できるようにしますが、
複雑で長いPerlコードを書く必要があります。

innotopは、値の名前または次のように単純に見えるテキストの文字列で始まります。
本格的なPerl式として複雑。 内の各「ベアワード」トークンを調べます
文字列であり、それが$ setハッシュへのキーであるかどうかを決定します。 ベアワードは
ドル記号やカーリーなどのコードっぽいものにまだ囲まれていない引用符で囲まれていない値
角かっこ。 innotopがベアワードが関数または他の有効なPerlコードではないと判断した場合、
それをハッシュアクセスに変換します。 文字列全体が処理された後、innotopはコンパイルします
このようなサブルーチン:

サブcompute_column_value {
my($ set、$ cur、$ pre)= @_;
私の$ val =#拡張された文字列はここにあります
$ valを返します。
}

これは、「Q:クエリリスト」モードのヘッダーテーブル「q_header」から抜粋した具体的な例です。
この式は、qps、つまりXNUMX秒あたりのクエリ数の列の値を計算します。
SHOW STATUSによって返される値:

質問/ Uptime_hires

innotopは、両方の単語がベアワードであると判断し、この式を
次のPerlコード:

$ set-> {Questions} / $ set-> {Uptime_hires}

サブルーチンの残りのコードに囲まれている場合、これは実行可能なPerlです。
高解像度のXNUMX秒あたりのクエリ数の値を計算します。

サブルーチンの引数には、$ set、$ cur、および$ preという名前が付けられています。 ほとんどの場合、$ setと
$ curは同じ値になります。 ただし、「status_inc」が設定されている場合、$ curは同じではありません
$ setには、増分差である値がすでに含まれているため、$ setとして
$ curと$ preの間。

innotopのすべての列は、同じ方法でコンパイルされたサブルーチンによって計算されます。 有る
innotopの組み込み列とユーザー定義列の間に違いはありません。 これは維持します
一貫性があり、予測可能なもの。

変換
変換により、値のレンダリング方法が変わります。 たとえば、彼らはいくつかを取ることができます
秒とH:M:S形式で表示します。 次の変換が定義されています。

共感する
小数点以下XNUMX桁ごとに大きな数値にコンマを追加します。

dulint_to_int
XNUMXつの符号なし整数を受け入れ、それらをXNUMXつのlonglongに変換します。 これは
トランザクションとしてXNUMXつの整数を使用するInnoDBを使用した特定の操作に役立ちます
たとえば、識別子。

no_ctrl_char
引用符で囲まれた制御文字を値から削除します。 これは「文字セット」の影響を受けます
構成変数。

この変換は、引用符で囲まれた文字列内でのみ機能します。たとえば、SETへの値などです。
UPDATEステートメントの句。 UPDATEステートメントは変更されませんが、変更されます
文字セットに応じて、引用符で囲まれた文字列を[BINARY]または[TEXT]に折りたたみます。

パーセント
数値にXNUMXを掛けて、次のようにフォーマットすることにより、数値をパーセンテージに変換します。
小数点以下の「num_digits」桁、およびオプションでパーセント記号の追加(を参照)
"show_percent")。

秒までの時間
秒数を時間+時間:分:秒の形式でフォーマットします。

セット精度
小数点以下の「num_digits」桁数で数値をフォーマットします。

短くする
数値を1024(k / M / G / T)の単位として、「num_digits」桁数でフォーマットします
小数点以下。

環境変数EDITOR
innotopテーブルエディタを使用すると、キーストロークでテーブルをカスタマイズできます。 あなたはテーブルを始めます
'^'キーを持つエディタ。 画面に複数のテーブルがある場合は、プロンプトが表示されます
それらのXNUMXつを選択します。 これを行うと、innotopは次のようなものを表示します。

バッファプールのテーブル定義を編集しています。 押す ? ヘルプが必要な場合は、qを終了します。

名前hdrラベルsrc
cxnCXN接続元cxn
buf_pool_sizeサイズバッファプールサイズIB_bp_buf_poo
buf_free Free Bufsバッファーは、bIB_bp_buf_freで解放されます
pages_totalページページ合計IB_bp_pages_t
pages_modifiedダーティページ変更されたページ(ダーティIB_bp_pages_m
buf_pool_hit_rateヒット率バッファプールのヒット率IB_bp_buf_poo
total_mem_allocメモリ合計メモリ割り当てIB_bp_total_m
add_pool_alloc Add'l Pool Additonal pool alloca IB_bp_add_poo

最初の行は、編集しているテーブルを示し、「?」を押すように再度通知します。 のために
キーマッピングのリスト。 残りは、テーブルの列を表形式で表したものです。
それはおそらくあなたが編集しようとしているものだからです。 ただし、編集するだけでは不十分です。
テーブルの列。 この画面では、フィルターエディター、カラールールエディターなどを起動できます。

ディスプレイの各行には、編集中のテーブルのXNUMXつの列と
ヘッダーやソース式などのいくつかのプロパティ(「式」を参照)。

キーマッピングは、他の多くの場所と同様に、Vimスタイルです。 「j」と「k」を押すと、
上または下を強調表示します。 次に、強調表示された列を(d)選択または(e)ディットできます。 あなたはできる
また、(a)テーブルに列を追加します。 これは実際にはすでに列のXNUMXつをアクティブにするだけです
テーブルに対して定義されています。 使用可能な列から選択するように求められますが、選択できません
現在表示されています。 最後に、「+」キーと「-」キーを使用して列を並べ替えることができます。

テーブルエディタで列を編集するだけでなく、他の列を編集することもできます
テーブルの並べ替え式やgroup-by式などのプロパティ。 押す '?' 見る
もちろん、完全なリスト。

単にアクティブ化するのではなく、実際にカスタマイズして独自の列を作成したい場合
現在表示されていない組み込みのもので、(n)ewキーを押すと、innotopが
必要な情報の入力を求めます。

・列名:これは、面白い文字を含まない単語である必要があります。
文字、数字、アンダースコア。

・列ヘッダー:これは、列の上部に表示されるラベルです。
テーブルヘッダー。 これにはスペースや面白いキャラクターを含めることができますが、作成しないように注意してください
幅が広すぎて、画面上のスペースが無駄になります。

・列のデータソース:これは、からのデータを決定する式です。
source(「表」を参照)innotopが列に配置されます。 これは単にの名前にすることができます
ソース内のアイテム、またはで説明されているように、より複雑な式にすることができます
「表現」。

必要なデータを入力すると、テーブルに新しい列が追加されます。 ありません
この列と組み込みの列の違い。 それはすべて同じプロパティを持つことができます
と行動。 innotopは列の定義を構成ファイルに書き込むため、
セッション間で持続します。

次に例を示します。スレーブが再試行した回数を追跡するとします。
トランザクション。 MySQLマニュアルによると、Slave_retried_transactionsステータス
変数はそのデータを提供します:「起動してからの合計回数
レプリケーションスレーブSQLスレッドがトランザクションを再試行しました。 この変数はバージョンで追加されました
5.0.4。 "これは、" slave_sql_status "テーブルに追加するのに適しています。

列を追加するには、「M」キーを使用してレプリケーション監視モードに切り替え、を押します。
'^'キーを押して、テーブルエディタを起動します。 プロンプトが表示されたら、slave_sql_statusを選択します。
テーブルで、「n」を押して列を作成します。 列名として「retries」と入力し、「Retries」と入力します。
列ヘッダーとして、ソースとして「Slave_retried_transactions」。 今、列は
が作成され、テーブルエディタ画面が再び表示されます。 'q'を押して、テーブルエディタを終了します。
表の最後に列が表示されます。

変数 セット


変数セットは「S:変数とステータス」モードで使用され、より簡単に何を定義するかを定義します
監視する変数。 舞台裏では、それらはのリストにコンパイルされます
式、そして列リストに入れて、他の列と同じように扱うことができるようにします
他の表、データの抽出と変換の観点から。 しかし、あなたは保護されています
あなたにとって非常に自然に感じられるはずの構文による退屈な詳細から:SQL SELECT
リスト。

変数セットのデータソース、そして実際にはSモード全体は、
SHOW STATUS、SHOW VARIABLES、およびSHOW INNODBSTATUS。 あなたが巨大なテーブルを持っていたと想像してください
これらのステートメントから返される変数ごとにXNUMXつの列があります。 それがのデータソースです
変数セット。 これで、期待どおりにこのデータソースをクエリできます。 例えば:

質問、稼働時間、QPSとしての質問/稼働時間

舞台裏では、innotopはその変数セットをXNUMXつの式に分割し、コンパイルします
それらをテーブル定義に変換し、通常どおりに抽出します。 これは
「変数セット」または「監視する変数のリスト」。

innotopを使用すると、変数セットに名前を付けて保存し、構成に書き込むことができます
ファイル。 'c'キーで表示する変数セットを選択するか、
'>'および '<'キーを使用した次および前のセット。 多くの組み込み変数セットがあります
同様に、それはあなたにあなた自身を作成するための良いスタートを与えるはずです。 'e'を押して編集します
現在の変数セット、またはそれがどのように定義されているかを確認するためだけに。 新しいものを作成するには、を押すだけです
'c'とその名前を入力します。

「変換」にリストされている関数のいくつかを使用して、
結果。 特に、「set_precision」は、桁数を制限するのに役立つことがよくあります。
見る。 上記の例を拡張して、次のようにします。

QPSとしての質問、稼働時間、set_precision(質問/稼働時間)

実際、これにはまだもう少し作業が必要です。 「間隔」がXNUMX未満の場合
次に、稼働時間はこのモードでは増分であるため、ゼロで除算している可能性があります。
ディフォルト。 代わりに、Uptime_hiresを使用してください。

QPSとしての質問、稼働時間、set_precision(Questions / Uptime_hires)

この例は単純ですが、必要な変数を選択するのがいかに簡単かを示しています
モニター。

PLUGINS


innotopには、シンプルで強力なプラグインメカニズムがあり、これにより、プラグインを拡張または変更できます。
既存の機能、および新しい機能を追加します。 innotopのプラグイン機能は
イベントベース:プラグインは、イベントが発生したときに呼び出されるように登録します。 彼らはそれから持っています
イベントに影響を与えるチャンス。

innotopプラグインは、innotopの「plugin_dir」ディレクトリに配置されたPerlモジュールです。 UNIXの場合
システムでは、実際のファイルを配置する代わりに、モジュールへのシンボリックリンクを配置できます
そこの。 innotopは自動的にファイルを検出します。 対応するエントリがある場合
「プラグイン」構成ファイルセクション、innotopはプラグインをロードしてアクティブ化します。

モジュールは、innotopのプラグインインターフェイスに準拠している必要があります。 さらに、のソースコード
モジュールは、innotopがファイルを検査して判別できるように作成する必要があります
パッケージ名と説明。

パッケージ ソース 大会
innotopは、プラグインモジュールのソースを調べて、Perlパッケージ名を判別します。 見えます
「packageFoo;」という形式の行の場合見つかった場合は、プラグインのパッケージ名を次のように考慮します
フーになります。 もちろん、パッケージ名は有効なPerlパッケージ名にすることができます。
セミコロンなど。

また、プラグインエディタをより人間味のあるものにするために、ソースコード内の説明を探します-
フレンドリー。 説明は、「#description:Foo」という形式のコメント行です。ここで、「Foo」は
innotopがプラグインの説明と見なすテキストです。

プラグイン インタフェース
innotopプラグインのインターフェースは非常にシンプルです。innotopはプラグインがオブジェクトであることを期待しています-
特定のメソッドを呼び出すことができる指向モジュール。 メソッドは

new(%variables)
これはプラグインのコンストラクターです。 innotopの変数のハッシュが渡されます。
操作できます(「プラグイン変数」を参照)。 新しくへの参照を返す必要があります
プラグインオブジェクトを作成しました。

構築時に、innotopは一般的な構成をロードして作成しただけです
デフォルトの組み込み変数とそのデフォルトの内容(これはかなり多いです)。
したがって、プログラムの状態は、innotopソースコードとまったく同じです。
構成ファイルの「general」セクションの構成変数。

プラグインが変数を操作する場合、共有されるグローバルデータを変更します
innotopとすべてのプラグインによる。 プラグインは、リストされている順序でロードされます。
設定ファイル。 プラグインは別のプラグインの前または後にロードされる可能性があるため、
プラグインが他のデータを変更した場合、プラグイン間の競合または相互作用の可能性
プラグインは使用または変更します。

register_for_events()
このメソッドは、プラグインが関係するイベントのリストを返す必要があります(存在する場合)。
定義されたイベントについては、「プラグインイベント」を参照してください。 プラグインがそうでないイベントを返す場合
定義されている場合、イベントは無視されます。

イベントハンドラー
プラグインは、プラグインが持つ各イベントと同じ名前のメソッドを実装する必要があります
登録済み。 言い換えれば、プラグインがqw(foo bar)を
register_for_events()、それは持っている必要があります foo() & バー() メソッド。 これらのメソッドは
イベントのコールバック。 各イベントの詳細については、「プラグインイベント」を参照してください。

プラグイン Variables
プラグインのコンストラクターには、操作可能なinnotopの変数のハッシュが渡されます。
プラグインオブジェクトが後で使用するためにそのコピーを保存することはおそらく良い考えです。 The
変数はinnotop変数%pluggable_varsで定義されており、次のとおりです。

アクション用
キーマッピングのhashref。 これらは、innotopのグローバルなホットキーです。

agg_funcs
グループ化に使用できる関数のハッシュ参照。 「グループ化」を参照してください。

設定
グローバル構成ハッシュ。

接続
接続仕様のハッシュ参照。 これらは、方法の単なる仕様です
サーバーに接続します。

dbhs
innotopのデータベース接続のhashref。 これらは実際のDBI接続オブジェクトです。

フィルター
テーブルの行に適用されるフィルターのhashref。 詳細については、「フィルター」を参照してください。

モード
モードのhashref。 詳細については、「モード」を参照してください。

サーバーグループ
サーバーグループのhashref。 「サーバーグループ」を参照してください。

tbl_meta
テーブルごとにXNUMXつのエントリを持つinnotopのテーブルメタデータのハッシュ参照(以下の「テーブル」を参照)
詳しくは)。

trans_funcs
変換関数のhashref。 「変換」を参照してください。

var_sets
変数セットのhashref。 「変数セット」を参照してください。

プラグイン イベント
各イベントは、innotopソースコードのどこかで定義されています。 innotopがそのコードを実行すると、
に関心を示したプラグインごとにコールバック関数を実行します。
イベント。 innotopは、イベントごとにいくつかのデータを渡します。 イベントはで定義されています
%event_listener_for変数であり、次のとおりです。

extract_values($ set、$ cur、$ pre、$ tbl)
このイベントは、データソースから値を抽出する関数内で発生します。 The
引数は、値のセット、現在の値、以前の値、および
テーブル名。

set_to_tbl
イベントは、このサブルーチンの多くの場所で定義されています。
画面に出力できる行のarrayrefへのhashrefsのarrayref。
イベントはすべて同じデータを渡します:行のarrayrefとテーブルの名前は
作成した。 イベントはset_to_tbl_pre_filter、
set_to_tbl_pre_sort、set_to_tbl_pre_group、set_to_tbl_pre_colorize、
set_to_tbl_pre_transform、set_to_tbl_pre_pivot、set_to_tbl_pre_create、
set_to_tbl_post_create。

draw_screen($ lines)
このイベントは、行を画面に出力するサブルーチン内で発生します。 $ lines
文字列のarrayrefです。

簡単な拡張で プラグイン
プラグインの機能を説明する最も簡単な方法は、おそらく簡単な例です。
次のモジュールは、すべてのテーブルの先頭に列を追加し、その値を次のように設定します。
1.

厳格な使用;
警告を使用するFATAL => 'all';

パッケージInnotop :: Plugin :: Example;
#説明:すべてのテーブルに「example」列を追加します

サブニュー{
my($ class、%vars)= @_;
#innotopの変数への参照を$ selfに格納します
私の$ self = bless {%vars}、$ class;

#サンプル列を設計する
私の$ col = {
hdr => '例'、
ただ=> ''、
dec => 0、
num => 1
label => '例'、
src => 'example'、#データソースのこの列からデータを取得します
tbl => ''、
トランス=> []、
};

#すべてのテーブルに列を追加します。
私の$ tbl_meta = $ vars {tbl_meta};
foreach my $ tbl(値%$ tbl_meta){
#定義された列のリストに列を追加します
$ tbl-> {cols}-> {example} = $ col;
#表示されている列のリストに列を追加します
unshift @ {$ tbl-> {visible}}、 '例';
}

#必ずオブジェクトへの参照を返します。
$ selfを返します。
}

#データセットがテーブルにレンダリングされているときに呼び出されます。
サブ register_for_events {
my($ self)= @_;
qw(set_to_tbl_pre_filter);を返します。
}

#このメソッドは、イベントが発生したときに呼び出されます。
サブ set_to_tbl_pre_filter {
my($ self、$ rows、$ tbl)= @_;
#サンプル列のデータソースを値1に設定します。
foreach my $ row(@ $ rows){
$ row-> {example} = 1;
}
}

1;

プラグイン エディター
プラグインエディタを使用すると、検出されたプラグインを表示し、アクティブ化または非アクティブ化できます
彼ら。 $を押してエディターを開始し、任意のモードから構成エディターを開始します。
'p'キーを押して、プラグインエディタを起動します。 innotopのプラグインのリストが表示されます
発見した。 'j'および 'k'キーを使用して、ハイライトを目的のキーに移動できます。
次に、*キーを押してアクティブまたは非アクティブを切り替えます。 エディターを終了し、innotopを再起動します
変更が有効になるようにします。

SQL 声明


innotopは、限られたSQLステートメントのセットを使用して、表示のためにMySQLからデータを取得します。 The
ステートメントは、実行されるサーバーのバージョンに応じてカスタマイズされます。
たとえば、MySQL 5以降では、INNODB_STATUSは「SHOWENGINEINNODBSTATUS」を実行します。
以前のバージョンでは、「SHOWINNODBSTATUS」を実行します。 ステートメントは次のとおりです
以下:

ステートメントSQLが実行されました
=================== ====================================
INNODB_STATUS SHOW [エンジン] INNODB ステータス
KILL_CONNECTION KILL
KILL_QUERY キル クエリ
OPEN_TABLESはOPENTABLESを表示します
プロセスリストは完全なプロセスリストを表示します
SHOW_MASTER_LOGS マスターログを表示
SHOW_MASTER_STATUS マスターステータスを表示
SHOW_SLAVE_STATUS スレーブのステータスを表示
SHOW_STATUS SHOW [グローバル] ステータス
SHOW_VARIABLES SHOW [グローバル] 変数

DATA SOURCES


innotopが値を抽出してテーブルを作成するたびに(「式」および「テーブル」を参照)、
特定のデータソースからそうします。 主にから抽出された複雑なデータのため
INNODBステータスを表示します。これは少し面倒です。 SHOW INNODB STATUSには、
ネストされたデータセットを形成する単一の値と繰り返しの値。

innotopがMySQLからデータをフェッチするたびに、各セットにXNUMXつのビットが追加されます。cxnと
Uptime_hires。 cxnは、データの送信元の接続の名前です。 Uptime_hires
サーバーの稼働時間ステータス変数の高解像度バージョンです。これは、次の場合に重要です。
「間隔」設定はXNUMX秒未満です。

データが抽出されるデータソースの種類は次のとおりです。

ステータス変数
これは最も広いカテゴリであり、ほとんどの種類のデータが分類されます。 それは
SHOWSTATUSとSHOWVARIABLESの組み合わせですが、他のソースが含まれている場合があります
必要に応じて、たとえば、SHOW MASTERSTATUSとSHOWSLAVE STATUS、および多くの
SHOW INNODBSTATUSから繰り返されない値。

DEADLOCK_LOCKS
このデータは、LATEST DETECTEDDEADLOCKのトランザクションリストから抽出されます
SHOW INNODBSTATUSのセクション。 それはXNUMXつのレベルの深さでネストされています:トランザクション、そして
ロック。

DEADLOCK_TRANSACTIONS
このデータは、SHOWのLATEST DETECTEDDEADLOCKセクションのトランザクションリストからのものです。
INNODBステータス。 XNUMXレベルの深さでネストされます。

説明する
このデータは、EXPLAINによって返された結果セットからのものです。

INNODB_TRANSACTIONS
このデータは、SHOW INNODBSTATUSのTRANSACTIONSセクションからのものです。

IO_THREADS
このデータは、SHOWINNODBのFILEI / Oセクションにあるスレッドのリストからのものです。
状態。

INNODB_LOCKS
このデータは、SHOW INNODB STATUSのTRANSACTIONSセクションからのものであり、XNUMXつネストされています
深いレベル。

OPEN_TABLES
このデータは、SHOW OPENTABLESからのものです。

プロセスリスト
このデータは、SHOW FULLPROCESSLISTからのものです。

OS_WAIT_ARRAY
このデータは、SHOW INNODB STATUSのSEMAPHORESセクションからのものであり、XNUMXレベルネストされています
深い。 これは、次のような行から来ています。

-スレッド1568861104はbtr0cur.cの424行目で待機しています...。

MYSQL 特権


・多くのユーザーに対してSUPER特権を持つユーザーとしてMySQLに接続する必要があります
機能します。

・SUPER権限がない場合でも、一部の機能を実行することはできますが、実行することはできません。
必然的にすべて同じデータを参照してください。

・Qモードで現在実行中のクエリのリストを表示するには、PROCESS権限が必要です。

・スレーブサーバーを起動および停止するには、特別な権限が必要です。

・必要に応じてデッドロックテーブルを作成および削除するには、適切な権限が必要です(を参照)。
「サーバー接続」)。

SYSTEM 募集要項


もちろん、innotopを実行するにはPerlが必要です。 また、いくつかのPerlモジュールが必要です:DBI、
DBD :: mysql、Term :: ReadKey、およびTime :: HiRes。 これらはほとんどのPerlに含まれている必要があります
ディストリビューションですが、そうでない場合は、一緒に配布されているバージョンを使用することをお勧めします
CPANからではなく、オペレーティングシステムまたはPerlディストリビューション。 特にTerm :: ReadKeyには
CPANからインストールすると問題が発生することが知られています。

Term :: ANSIColorがある場合、innotopはそれを使用してヘッダーをより読みやすくフォーマットします。
コンパクトに。 (Microsoft Windowsでは、ターミナル用にWin32 :: Console :: ANSIも必要です。
尊重されるフォーマットコード)。 Term :: ReadLineをインストールする場合、できれば
Term :: ReadLine :: Gnu、あなたは素晴らしいオートコンプリートサポートを得るでしょう。

私はGentooGNU / Linux、Debian、Ubuntuでinnotopを実行しており、人々からフィードバックがありました。
Red Hat、CentOS、Solaris、およびMacOSXで正常に実行されます。 理由がわからない
なぜ他のUNIX風のオペレーティングシステムでは動作しないのか、はっきりとはわかりません。 また
ActivePerlの下でWindows上で問題なく実行されます。

innotopは、MySQLバージョン3.23.58、4.0.27、4.1.0、4.1.22、5.0.26、5.1.15、
および5.2.3。 正しく実行されない場合は、報告する必要のあるバグです。

onworks.netサービスを使用してinnotopをオンラインで使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad