文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.3.5 socket_instances 表格

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 形式的名稱,其用法如下

  1. 伺服器針對其支援的每個網路協定都有一個接聽 socket。與 TCP/IP 或 Unix socket 檔案連線的接聽 socket 相關聯的儀器,其 socket_type 值分別為 server_tcpip_socketserver_unix_socket

  2. 當接聽 socket 偵測到連線時,伺服器會將連線傳輸到由個別執行緒管理的新 socket。新連線執行緒的儀器其 socket_type 值為 client_connection

  3. 當連線終止時,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 狀態,可以是 IDLEACTIVE。活動 Socket 的等待時間會使用對應的 Socket 儀器追蹤。閒置 Socket 的等待時間則使用 idle 儀器追蹤。

    如果 Socket 正在等待來自用戶端的請求,則該 Socket 為閒置狀態。當 Socket 變成閒置狀態時,追蹤該 Socket 的 socket_instances 中的事件列會從 ACTIVE 狀態切換為 IDLEEVENT_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 代表本機主機)。