国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - 詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理

詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理

2021-05-07 20:56AsiaYe Mysql

這篇文章主要介紹了詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下

存儲(chǔ)引擎之內(nèi)存管理

在innodb存儲(chǔ)引擎中,數(shù)據(jù)庫中的緩沖池是通過lru(latest recent used,最近最少使用)算法來進(jìn)行管理的,即最頻繁使用的頁在lru列表的最前段,而最少使用的頁在lru列表的尾端,當(dāng)緩沖池不能存放新讀取到的頁時(shí),首先釋放lru列表尾端的頁。

詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理

上面的圖中,我使用8個(gè)數(shù)據(jù)頁來表示隊(duì)列,具體作用,先賣個(gè)關(guān)子。在innodb存儲(chǔ)引擎中,緩沖池中頁的默認(rèn)大小是16kb,lru列表中有一個(gè)midpoint的位置,新讀取到的數(shù)據(jù)頁并不是直接放入到lru列表的首部,而是放入到lru列表的midpoint位置,這個(gè)操作稱之為midpoint insertion stategy,也叫中間點(diǎn)插入策略。在默認(rèn)配置下,該位置在lru長度的5/8處,這也就是上面使用8個(gè)數(shù)據(jù)頁的作用。下面的圖示意了新的數(shù)據(jù)頁的插入過程:

詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理

mitpoint的位置可通過參數(shù)innodb_old_blocks_pct控制,如下:

?
1
2
3
4
5
6
7
mysql> show variables like 'innodb_old_blocks_pct';
+-----------------------+-------+
| variable_name         | value |
+-----------------------+-------+
| innodb_old_blocks_pct | 37    |
+-----------------------+-------+
 row in set (. sec)

從上面的例子看出,結(jié)果是37,這個(gè)37意味著新讀取的頁將被插入到大概距離lru列表尾端37%的位置,差不多3/8的位置,在innodb存儲(chǔ)引擎中,midpoint之前的頁稱為new列表,后面的頁稱之為old列表,new列表中的頁是最為活躍的數(shù)據(jù)。

為什么不直接把數(shù)據(jù)頁放在lru隊(duì)列的首部?

之所以不把新讀取的數(shù)據(jù)頁放在lru隊(duì)列的首部,是因?yàn)槟承┤頀呙璧膕ql操作可能會(huì)將所有的熱點(diǎn)數(shù)據(jù)都刷新出lru隊(duì)列,導(dǎo)致下一次訪問熱點(diǎn)數(shù)據(jù)的時(shí)候,必須從磁盤中取相應(yīng)的數(shù)據(jù),從而影響緩沖池的效率。為了解決這個(gè)問題,innodb使用另外一個(gè)參數(shù)來管理lru列表,就是innodb_old_blocks_time,用于表示頁讀取到midpoint之后,多久才會(huì)加入到lru列表的熱端。因此當(dāng)需要執(zhí)行上述所說的sql操作時(shí),可以通過下面的方法盡可能使lru列表中的熱點(diǎn)數(shù)據(jù)不被刷出。

?
1
2
mysql> set global innodb_old_blocks_time=;
query ok,  rows affected (0.00 sec)

這表示在1000s之后,才允許這些數(shù)據(jù)刷新到lru列表的熱端。

如果在實(shí)際情況中,數(shù)據(jù)頁活躍的比率不止63%,用戶還可以通過設(shè)置innodb_old_blocks_pct來減少熱點(diǎn)頁可能被刷出的概率。

?
1
2
mysql> set global innodb_old_blocks_pct=;                                                                                                    
query ok,  rows affected (0.00 sec)

當(dāng)數(shù)據(jù)庫剛啟動(dòng)時(shí),lru的內(nèi)容是空的,這個(gè)時(shí)候,所有的數(shù)據(jù)頁都放在free列表中,當(dāng)需要從緩沖池中分頁時(shí),首先從free列表中查找是否有可用的free頁,如果存在,則將該頁從free頁中刪除,然后放入到lru的列表中。淘汰掉lru列表末尾的數(shù)據(jù)頁,將該內(nèi)存空間分配給新的頁。這個(gè)過程的流程圖如下:

詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理

當(dāng)lru列表中的頁從old部分加入到new部分時(shí),稱此時(shí)發(fā)生的操作是page made young,而因?yàn)閕nnodb_old_blocks_time的設(shè)置而沒有從old部分移動(dòng)到new部分的操作稱之為page_not_made young。可以通過show engine innodb status來觀察lru列表以及free列表的使用情況和運(yùn)行狀態(tài)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> show engine innodb status\g
***
***
----------------------
buffer pool and memory
----------------------
total large memory allocated
dictionary memory allocated
buffer pool size  
free buffers      
database pages    
old database pages
modified db pages 
pending reads     
pending writes: lru , flush list , single page
pages made young , not young
0.00 youngs/s, 0.00 non-youngs/s
pages read , created , written
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
no buffer pool page gets since the last printout
pages read ahead 0.00/s, evicted without access 0.00/s, random read ahead 0.00/s
lru len: , unzip_lru len:
i/o sum[]:cur[], unzip sum[]:cur[]
--------------
row operations
--------------
 queries inside innodb,  queries in queue
 read views open inside innodb
process id=, main thread id=, state: sleeping
number of rows inserted , updated , deleted , read
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
end of innodb monitor output
============================
 
 row in set (0.00 sec)

    從上面的結(jié)果可以看到:當(dāng)前buffer pool size總共有8191個(gè)頁,每個(gè)數(shù)據(jù)頁的大小是16k,總共的大小是8191*16k=128m的緩沖池,其中free buffers表示當(dāng)前free列表中頁的數(shù)量。page made young顯示了lru列表中頁移動(dòng)到前端的次數(shù),因?yàn)樵摲?wù)器在運(yùn)行階段沒有改變innodb_old_blocks_time的值,因此not young為0,youngs/s、non_youngs/s表示每秒這兩類操作的次數(shù)。

    innodb存儲(chǔ)引擎從1.0.x版本開始支持壓縮頁的功能,即將原本16kb的數(shù)據(jù)頁壓縮成1kb、2kb、4kb和8kb。對(duì)于非16kb的頁,是通過unzip_lru來管理的,上述命令中的第22行就顯示了壓縮頁和非壓縮頁的信息。

需要注意的一點(diǎn)是free buffers的值與database pages的值之和不一定等于buffer pool size,因?yàn)榫彌_池中的頁可能還會(huì)被分配各自適應(yīng)哈希索引、鎖信息等頁,而這部分頁并不需要lru算法進(jìn)行維護(hù)。

臟頁

     在lru列表中的頁被修改之后,這個(gè)頁就稱之為“臟頁”,即緩沖池中的數(shù)據(jù)頁和磁盤上的數(shù)據(jù)產(chǎn)生了不一致,緩沖池的數(shù)據(jù)比較新,這時(shí)數(shù)據(jù)庫會(huì)通過checkpoint機(jī)制將臟頁刷新回磁盤,而flush列表中的頁也就是臟頁列表,臟頁既存在于lru列表中,也存在與flush列表中,lru列表用來管理緩沖池中頁的可用性,flush列表用來管理將頁刷新回磁盤,二者不影響。flush列表也可以通過show engine innodb status來查看,前面的結(jié)果列表中的第13行,modified db pages就是當(dāng)前的臟頁數(shù)量,用戶可以通過元數(shù)據(jù)表innodb_buffer_page_lru表來查看。

以上就是詳解mysql innodb存儲(chǔ)引擎的內(nèi)存管理的詳細(xì)內(nèi)容,更多關(guān)于innodb 內(nèi)存管理的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://cloud.tencent.com/developer/article/1533579

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲日韩成人 | 国产综合在线视频 | 91欧美激情一区二区三区成人 | 久久久久成人精品免费播放动漫 | av软件在线 | 中文字幕av一区 | 久久久av | 欧美精品一二区 | 国产精品不卡在线播放 | 久久大陆| 精久久久| 夜夜嗨av色一区二区不卡 | 91av国产精品 | 久久久久久久久久久久99 | 色综合天天综合网国产成人网 | 精品一区二区在线观看 | 不卡视频一区二区 | 久久中文字幕一区 | 黄色av网 | 成人3d动漫一区二区三区91 | 在线欧美亚洲 | 国产精品自拍在线观看 | 97久久久| 国产精品免费av | 中文字幕一区二区三区精彩视频 | 一区二区三区免费看 | 国产精品久久久久永久免费观看 | 日本一二三视频 | 亚洲精品成人天堂一二三 | 夜夜草视频 | 三级黄色片在线免费观看 | 日本一区二区免费视频 | 国产一区 欧美 | 亚洲精品视频在线观看网站 | 欧美a级成人淫片免费看 | 天天插天天干 | 一区二区三区影视 | 日韩欧美视频免费观看 | 亚洲视频区 | 欧美日韩成人 | www.91福利|