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。
狀態
Socket 狀態,可以是
IDLE
或ACTIVE
。活動 Socket 的等待時間會使用對應的 Socket 儀器追蹤。閒置 Socket 的等待時間則使用idle
儀器追蹤。如果 Socket 正在等待來自用戶端的請求,則該 Socket 為閒置狀態。當 Socket 變成閒置狀態時,追蹤該 Socket 的
socket_instances
中的事件列會從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
代表本機主機)。