最近在優化項目數據庫性能的時候發現 Sending data 耗費不少時間,網上查了不少,發現沒人能確切的解釋Sending data 在幹什麼。。。因而找到了官網的解釋:html
Sending datamysql
The thread is reading and processing rows for a SELECT statement, and sending data to the client. Because operations occurring during this state tend to perform large amounts of disk access (reads), it is often the longest-running state over the lifetime of a given query.sql
說Sending data 是:線程正在爲一個select語句讀取和處理行,而且發送數據到客戶端。由於這期間操做傾向於大量的磁盤訪問(讀取),因此這常是整個查詢週期中運行時間最長的階段。(這是MySQL 5.5的解釋,5.7的解釋徹底同樣,可是5.7多了一個Sending to client狀態)數據庫
這樣就清楚了,Sending data 作了 讀取,處理(過濾,排序等。。)和發送 三件事情,接下來再看該狀態下的cpu 和 io 信息 以分析語句的瓶頸是 讀取仍是處理 ,再作相應的優化調整。。。性能
其餘狀態的說明:https://dev.mysql.com/doc/refman/5.5/en/general-thread-states.html優化