取數和發送數據流程-mysql45講-打卡活動

MySQL 取數和發送數據流程是”邊讀邊發的“,具體流程如下:
  1. 獲取一行,寫到 net_buffer 中(由參數 net_buffer_length 設置,默認是 16k)
  2. 重複獲取行,直到 net_buffer 寫滿,調用網絡接口發出去。
  3. 如果發送成功,就清空 net_buffer,然後繼續取下一行,並寫入 net_buffer。
  4. 如果發送函數返回 EAGAIN 或 WSAEWOULDBLOCK,就表示本地網絡棧(socket send buffer)寫滿了,進入等待。直到網絡棧重新可寫,再繼續發送。
 
內存命中率,可以通過執行show engine innodb status,裏面Buffer pool hit rate就是當前的命中率
InnoDB Buffer Pool 的大小是由參數 innodb_buffer_pool_size 確定的,一般建議設置成可用物理內存的 60%~80%。
InnoDB 內存管理用的是最近最少使用 (Least Recently Used, LRU) 算法,是用鏈表來實現的,按照 5:3 的比例把整個 LRU 鏈表分成了 young 區域和 old 區域。圖中 LRU_old 指向的就是 old 區域的第一個位置,是整個鏈表的 5/8 處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章