最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MYSQL查詢結(jié)果實現(xiàn)發(fā)送給客戶端

 更新時間:2025年06月11日 11:11:40   作者:Dennis_nafla  
這篇文章主要介紹了MYSQL查詢結(jié)果實現(xiàn)發(fā)送給客戶端方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MYSQL取數(shù)據(jù)和發(fā)數(shù)據(jù)的流程(邊讀邊發(fā))

  • 1.服務(wù)端,獲取一行數(shù)據(jù),存到net_buffer中,可以理解為結(jié)果集
  • 2.繼續(xù)讀取數(shù)據(jù),直到net_buffer寫滿,調(diào)用網(wǎng)絡(luò)接口發(fā)出去
  • 3.如果發(fā)送成功,就清空net_buffer
  • 4.如果發(fā)送失敗,就說明socket send buffer 寫滿了,進入等待,直到有足夠的空間可寫,再繼續(xù)發(fā)送。

注意net_buffer滿了就發(fā)給客戶端而不是等查詢語句查詢完所有數(shù)據(jù)才發(fā),其中net_buffer默認(rèn)大小是16k,所以服務(wù)器占用內(nèi)存最多是16k,不會因為查詢200G的數(shù)據(jù)導(dǎo)致內(nèi)存爆掉。

如果客戶端接收數(shù)據(jù)太慢,就會導(dǎo)致數(shù)據(jù)在socket send buffer 堆積,導(dǎo)致發(fā)送數(shù)據(jù)到客戶端的線程進入等待,由于net_buffer數(shù)據(jù)沒有發(fā)送出去,net_buffer一直沒法清空,查詢語句就要等待net_buffer清空才能繼續(xù)執(zhí)行,導(dǎo)致服務(wù)端查詢速度變慢。

Sending to client

假設(shè)使用show processlist發(fā)現(xiàn)一條語句的state是“Sending to client”,就是上面說的在等待socket send buffer 有足夠空間可以將net_buffer中的數(shù)據(jù)寫進去發(fā)送給客戶端。

Sending Data

一個查詢語句的狀態(tài)是這樣的:

  • 1.首先將語句狀態(tài)寫成Sending Data
  • 2.將查詢需要的列信息發(fā)送給客戶端
  • 3.繼續(xù)執(zhí)行查詢
  • 4.完成查詢,將狀態(tài)寫成空

但是MYSQL8好像改了,我看到的是executing

LRU(Least Recently Used )算法

最近最少使用算法是一種內(nèi)存淘汰機制,核心是--內(nèi)存空間不足時,將最少使用的數(shù)據(jù)頁淘汰

innodb管理Buffer Pool 的LRU算法,是通過鏈表來實現(xiàn)的,每個鏈表節(jié)點就是一個數(shù)據(jù)頁。

  • 1.鏈表中任意一個數(shù)據(jù)頁被訪問到時,就將這個節(jié)點放在鏈表的頭節(jié)點
  • 2.當(dāng)訪問一個鏈表中沒有的數(shù)據(jù)頁,需要加載到BufferPool并且放在頭節(jié)點
  • 3.當(dāng)新節(jié)點要進來時,如果鏈表空間不足了,就把鏈表尾節(jié)點從鏈表中刪除。

但是這個LRU在某些場景時有很大問題的

比如一個語句查詢了歷史數(shù)據(jù)表(非業(yè)務(wù)熱點數(shù)據(jù)表)的所有數(shù)據(jù),這就會把鏈表中之前維護的熱點數(shù)據(jù)頁都淘汰掉,留下一些非業(yè)務(wù)熱點數(shù)據(jù)頁,會導(dǎo)致緩存命中率急劇降低,磁盤IO壓力倍增。

針對這種清空,Innodb對LRU算法進行了優(yōu)化

就是對鏈表進行了分區(qū),前5/8是young區(qū),后3/8是old區(qū)。

  • 1.如果young的數(shù)據(jù)頁被訪問到了,和普通LRU算法一樣,移到鏈表頭部。
  • 2.如果鏈表空間滿了,此時有個新的數(shù)據(jù)頁要加進來,和普通LRU算法一樣首先把鏈表尾部的數(shù)據(jù)頁淘汰,不過這個新的數(shù)據(jù)頁不是放在鏈表頭部,而是放在old區(qū)的第一個位置。
  • 3.對于old區(qū)的數(shù)據(jù)頁,每次訪問都要進行判斷:

如果該數(shù)據(jù)頁在old待的時間大于1秒,就移動到整個鏈表的頭節(jié)點。

如果小于1秒,就不改變位置。

這個1秒是由innodb_old_blocks_time參數(shù)控制的。

這樣一來,短時間內(nèi)的非熱點數(shù)據(jù)只會存在于old區(qū),一段時間內(nèi)不被訪問就慢慢掉到尾部被淘汰了,不會影響到真正的熱點數(shù)據(jù),它們會一直在young區(qū)。保證了不影響正常業(yè)務(wù)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負(fù)數(shù)時sql 語句報錯的問題

    Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負(fù)數(shù)時sql 語句報錯的問題

    這篇文章主要介紹了Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負(fù)數(shù)時sql 語句報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • MYSQL updatexml()函數(shù)報錯注入解析

    MYSQL updatexml()函數(shù)報錯注入解析

    這篇文章主要介紹了MYSQL updatexml()函數(shù)報錯注入解析,并且簡單介紹了updatexml函數(shù),具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • MYSQL輸入密碼后閃退現(xiàn)象的解決方法

    MYSQL輸入密碼后閃退現(xiàn)象的解決方法

    最近在啟動MySQL服務(wù)端并輸入密后,出現(xiàn)閃退現(xiàn)象,實際上這種問題很常見,下面這篇文章主要給大家介紹了關(guān)于MYSQL輸入密碼后閃退現(xiàn)象的解決方法,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySQL如何查看某個表所占空間大小

    MySQL如何查看某個表所占空間大小

    在MySQL數(shù)據(jù)庫管理和優(yōu)化中,了解表所占用的空間大小是非常重要的,本文為大家整理了多種查看MySQL表空間大小的方法,需要的可以參考一下
    2025-05-05
  • MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變

    MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變

    這篇文章主要介紹了MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql 5.7從節(jié)點配置多線程主從復(fù)制的方法詳解

    Mysql 5.7從節(jié)點配置多線程主從復(fù)制的方法詳解

    這篇文章主要介紹了Mysql 5.7從節(jié)點配置多線程主從復(fù)制的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 查詢MySQL中的樹型表兩種方法

    查詢MySQL中的樹型表兩種方法

    在 MySQL中查詢樹型表(即具有層級結(jié)構(gòu)的表)可以使用遞歸查詢或者使用嵌套集模型,下面介紹兩種方法查詢MySQL中的樹型表,感興趣的朋友一起看看吧
    2024-01-01
  • MySQL建表(create?table)命令解讀

    MySQL建表(create?table)命令解讀

    這篇文章主要介紹了MySQL建表(create?table)命令的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • sysbench的安裝與使用 分享

    sysbench的安裝與使用 分享

    sysbench是一款開源的多線程性能測試工具,可以執(zhí)行CPU/內(nèi)存/線程/IO/數(shù)據(jù)庫等方面的性能測試。數(shù)據(jù)庫目前支持MySQL/Oracle/PostgreSQL
    2013-09-09
  • MySQL的savepoint簡介及實例

    MySQL的savepoint簡介及實例

    MySQL中的保存點Savepoint是一個用于控制事務(wù)的重要工具,本文主要介紹了MySQL的savepoint簡介及實例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論

永丰县| 襄樊市| 偏关县| 尼勒克县| 民丰县| 舞钢市| 丹寨县| 彭山县| 绥芬河市| 巴南区| 安塞县| 尼木县| 和龙市| 临湘市| 馆陶县| 客服| 青田县| 建始县| 周至县| 小金县| 高州市| 旅游| 鲁甸县| 潼关县| 集贤县| 东乡| 浏阳市| 江达县| 莫力| 安远县| 辽中县| 调兵山市| 伊川县| 冷水江市| 台湾省| 承德县| 商丘市| 屏边| 杭锦后旗| 武汉市| 合江县|