2012-01-19 26 views
1

mySQLはユーザー接続に特定の接続ID(thread_id)範囲を使用していますか?私は55,56のような50の範囲にあるすべての接続を確認します。しかし、8と9の他の接続(私ではない)があります。mysql接続ID(thread_id)

または私はユーザーのconenctionのIDだけを選択することができるテーブルはありますか?

イム一緒に働くのクエリは次のとおりです。

USE mysql; 
SELECT * FROM general_log 
WHERE command_type='query' AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*') AND thread_id != CONNECTION_ID() 
ORDER BY event_time DESC; 

ですが、idすべてなしのユーザーquerysをフィルタリングしたいです。


EDIT

は、私は別のテーブルを見つけたので、processlistは明らかにのみアクティブな接続の詳細を与え、それがどのユーザまたはシステムプロセスの場合、私はまだ言うカントが、今、私のクエリは、次のようになります接続を作成しました

USE mysql; 
#TRUNCATE general_log; 
SELECT * FROM general_log AS gl 
LEFT JOIN information_schema.PROCESSLIST AS pl ON pl.ID = gl.thread_id 
WHERE command_type='query' AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*') AND thread_id != CONNECTION_ID() 
ORDER BY event_time DESC; 
+0

何も言わないし。私はドキュメントでこの情報を見つけることさえできません。 – Devart

+0

私もドキュメントを試しました。何も見つかりません... – Christian

+0

http://dba.stackexchange.com/に所属しています – Mchl

答えて

1

あなたの最初の質問に対する答えは「いいえ」です。

すべての接続は同じ接続ID範囲を共有しているため、接続に関する有用な情報は表示されません。

あなたが特定のユーザーを除外したい場合は(多分「REPL」または「システムユーザ」)は、あなたがUSER_HOST列でそれを行うことができます。

USE mysql; 
SELECT * FROM general_log 
WHERE command_type='query' 
AND argument REGEXP ('^(SELECT|INSERT|DELETE|UPDATE).*') 
AND thread_id != CONNECTION_ID() 
AND user_host NOT IN (...) 
ORDER BY event_time DESC;