2012-01-19 37 views
1

mySQL是否使用特定連接標識(thread_id)範圍進行用戶連接?我注意到我所做的所有連接都在50年代的範圍內,如55,56。但有其他連接(不是我的)是8和9.mysql連接標識(thread_id)

或者是否有一個表,我可以只選擇用戶conenction ID的?

一起工作的查詢Im爲:

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; 

但我還想過濾掉所有沒有用戶querys。


編輯

我發現了另一個表,所以現在我的查詢看起來是這樣的,雖然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;