socket_instances
表格提供連線至 MySQL 伺服器的即時快照。此表格每個 TCP/IP 或 Unix socket 檔案連線各包含一列。此表格中可用的資訊提供伺服器活動連線的即時快照。(其他資訊可在 socket 摘要表格中找到,包括網路活動,例如 socket 作業以及傳輸和接收的位元組數;請參閱第 29.12.20.9 節,「Socket 摘要表格」)。
mysql> SELECT * FROM performance_schema.socket_instances\G
*************************** 1. row ***************************
EVENT_NAME: wait/io/socket/sql/server_unix_socket
OBJECT_INSTANCE_BEGIN: 4316619408
THREAD_ID: 1
SOCKET_ID: 16
IP:
PORT: 0
STATE: ACTIVE
*************************** 2. row ***************************
EVENT_NAME: wait/io/socket/sql/client_connection
OBJECT_INSTANCE_BEGIN: 4316644608
THREAD_ID: 21
SOCKET_ID: 39
IP: 127.0.0.1
PORT: 55233
STATE: ACTIVE
*************************** 3. row ***************************
EVENT_NAME: wait/io/socket/sql/server_tcpip_socket
OBJECT_INSTANCE_BEGIN: 4316699040
THREAD_ID: 1
SOCKET_ID: 14
IP: 0.0.0.0
PORT: 50603
STATE: ACTIVE
Socket 儀器的名稱形式為 wait/io/socket/sql/
,並以此方式使用socket_type
伺服器針對其支援的每個網路協定都有一個接聽 socket。與 TCP/IP 或 Unix socket 檔案連線的接聽 socket 相關聯的儀器,其
socket_type
值分別為server_tcpip_socket
或server_unix_socket
。當接聽 socket 偵測到連線時,伺服器會將連線轉移至由個別執行緒管理的新 socket。新連線執行緒的儀器
socket_type
值為client_connection
。當連線終止時,會刪除
socket_instances
中對應的列。
socket_instances
表格具有下列欄位
EVENT_NAME
產生事件的
wait/io/socket/*
工具的名稱。這是來自setup_instruments
表格的NAME
值。工具名稱可能有多個部分並形成一個階層,如第 29.6 節,「Performance Schema 工具命名慣例」中所述。OBJECT_INSTANCE_BEGIN
此欄唯一識別 socket。該值是記憶體中物件的位址。
THREAD_ID
伺服器指派的內部執行緒識別符。每個 socket 都由單一執行緒管理,因此每個 socket 都可以對應到一個執行緒,而該執行緒又可以對應到一個伺服器進程。
SOCKET_ID
指派給 socket 的內部檔案控制代碼。
IP
用戶端 IP 位址。該值可以是 IPv4 或 IPv6 位址,或是空白,表示 Unix socket 檔案連線。
PORT
TCP/IP 連接埠號碼,範圍從 0 到 65535。
STATE
socket 狀態,可以是
IDLE
或ACTIVE
。活動 socket 的等待時間會使用對應的 socket 工具進行追蹤。閒置 socket 的等待時間會使用idle
工具進行追蹤。如果 socket 正在等待來自用戶端的請求,則該 socket 處於閒置狀態。當 socket 進入閒置狀態時,在
socket_instances
中追蹤 socket 的事件列會從ACTIVE
狀態切換為IDLE
。EVENT_NAME
值保持為wait/io/socket/*
,但工具的計時會暫停。相反地,會在events_waits_current
表格中產生一個EVENT_NAME
值為idle
的事件。當接收到下一個請求時,
idle
事件會終止,socket 執行個體會從IDLE
切換為ACTIVE
,且 socket 工具的計時會恢復。
socket_instances
表格具有以下索引:
主索引鍵位於 (
OBJECT_INSTANCE_BEGIN
)索引位於 (
THREAD_ID
)索引位於 (
SOCKET_ID
)索引位於 (
IP
,PORT
)
不允許對 socket_instances
表格使用 TRUNCATE TABLE
。
IP:PORT
欄位組合值可識別連線。此組合值用於 events_waits_
表格的 xxx
OBJECT_NAME
欄位中,以識別 socket 事件來自的連線。
對於 Unix 網域接聽 socket (
server_unix_socket
),連接埠為 0,而 IP 為''
。對於透過 Unix 網域接聽程式 (
client_connection
) 進行的用戶端連線,連接埠為 0,而 IP 為''
。對於 TCP/IP 伺服器接聽 socket (
server_tcpip_socket
),連接埠始終是主連接埠 (例如,3306),而 IP 始終為0.0.0.0
。對於透過 TCP/IP 接聽程式 (
client_connection
) 進行的用戶端連線,連接埠是伺服器指派的任何值,但永遠不是 0。IP 是來源主機的 IP (127.0.0.1
或::1
代表本機主機)