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: ACTIVESocket 儀器具有 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 檔案連線。
PORTTCP/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_ 表格的 xxxOBJECT_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代表本機主機)。