単一データベースのクエリログを有効にする


8

mysql 5.6サーバーに多くのデータベーススキーマがありますが、ここでの問題は、1つのスキーマのみのクエリをキャッチしたいということです。

スキーマの1つが高負荷でサーバーに影響を与えるため、サーバー全体のクエリログを有効にできません。

彼らのやり方は、私が単一のスキーマでのみクエリをログに記録できるツールです。

クエリログが有効な場合のトランザクション/秒への影響を示すベンチマークグラフを見つけました。

ここに画像の説明を入力してください ここに画像の説明を入力してください


代わりにスロークエリログを使用できますか?そして、pt-query-digestでそのログを解析しますか?そうでない場合は、pt-query-digestによって解析されたtcpdump出力を試すことができます
jerichorivera

回答:


1

興味深い質問と+1。この機能のいくつかの使用例を見ることができるので、私はこれに興味を持っていました。

残念ながら、一般的なロギングをオンにできない場合、回避策は1つだけではなく、不十分です。

つまり、SQL_LOG_OFF変数を使用して、特定の接続のロギングを無効にします。理想的な解決策は、Oracleで実行できるように "SQL_LOG_ON"変数を使用することでした(同等)-おそらく、関心のある接続以外のすべてのログをオフに切り替えてみてください。

さらに、残念ながら、これにはSUPER特権が必要です。繰り返しますが、これはあなたのケースでは不可能かもしれません(おそらく不可能です)。

問題の重大度、特定の時間における稼働時間、サーバーの負荷に応じて、ログ分析に役立つPerconaのpt-query-digestの使用法を見つけることができる場合があります。小さな慰め、しかし、通常のPostgreSQLは先のMySQL(の通りであるとして、12)。

機能のリクエストを提出していただける場合は、こちらにリンクを投稿していただければ、「やり直し」でフォローアップさせていただきます。


1

キーリングに近づきすぎてFILEへの一般ログをオンにできない場合、問題はさらに悪化しています。彼らは修正が必要です。

本当の知識がなければ、slowlogが特にで同様の影響を与えると思いlong_query_time = 0ます。

5.7には「クエリの書き換え」機能があります。そこではいくつかのトリックが使われるかもしれません。(ただし、やはり、ある程度のオーバーヘッドがあり、ベンチマークする必要があります。)

クエリをどれくらいの期間キャッチしたいですか?1つのいたずらなアクションのソースを探しているだけですか?または、そのテーブルの現実的なベンチマークを構築するためにクエリを収集しようとしていますか?または、他の何か?

レプリケーションはオンになっていますか?読み取りに興味がありますか?または書き込みますか?または両方?

同時にいくつのスレッドがアクティブですか?あなたが示したベンチマークは、1の場合、ログのオーバーヘッドが少ないことを示しています。高い並行性のために処理を強制終了しているのは、MyISAMまたはCSVのテーブルロックです。

2番目のグラフは、クライアントが実際には約5〜8の同時接続に制限される必要があることを示しています。そうでない場合、スループットは実際に低下します。そのグラフmax_connectionsMax_used_connectionsは何ですか?


こんにちは、約2日間クエリをキャプチャします。これらのグラフはベンチマークとは関係ありません...知識の目的でのみ貼り付けました。クエリが必要なアプリは、リソース消費が少ないアプリです。Tcpdumpはタイミング統計を提供しません。
Suyash Jain
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.