国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

InnoDb 體系架構和特性詳解 (Innodb存儲引擎讀書筆記總結)

2024-07-09 22:47:59
字體:
來源:轉載
供稿:網友

后臺線程

•Master Thread

核心后臺線程,主要負責將緩沖池的數據異步刷新到磁盤。例如臟頁的刷新,插入緩沖的合并,undo 頁的回收等。

每秒一次的操作:

1.日志緩沖刷新到磁盤,即使該事務還沒有提交。該操作總是會發生,這個就是為了再大的事務,提交時間都很短。

2.當IO壓力很小時(1s內發生的IO次數小于5% innodb_io_capacity)合并5% innodb_io_capacity 的插入緩沖。

3.當臟頁比例大于 innodb_max_dirty_pages_cnt, 刷新 innodb_io_capacity 個緩沖池中的臟頁到磁盤。否則如果 innodb_adaptive_flush 開啟,則根據buf_flush_get_desired_flush_rate 來選擇合適刷新臟頁數量進行刷新。

每10秒一次的操作:

1.如果過去10S 內IO操作小于 innodb_io_capacity, 刷新 innodb_io_capacity 個緩沖池中的臟頁到磁盤。

2.合并5% innodb_io_capacity 個插入緩沖。

3.將日志緩沖刷新到磁盤。

4.刪除無用的undo頁。

5.如果緩沖池中臟頁比例超過70%,再次刷新 innodb_io_capacity 個臟頁到磁盤。否則刷新10% innodb_io_capacity 個臟頁。

background loop(數據庫空閑或者數據庫關閉時):

1.刪除無用的undo頁。

2.合并 innodb_io_capacity 個插入緩沖。

flush loop(數據庫空閑):

1.刷新 innodb_io_capacity 個臟頁

•IO Thread

Innodb存儲引擎大量使用了AIO, IO Thread主要負責IO請求的回調。 可使用innodb_read_io_threads和innodb_write_io_threads參數列表調整。

•Purge Thread

事務提交后。該事務相關的undolog可能不再需要。Purge Thread就是用來回收不需要的undo頁的。

•PageCleaner Thread

負責臟頁的刷新操作。減輕master thread的工作以及對于用戶查詢線程的阻塞。

內存緩沖池

對于數據庫中頁的修改操作,首先修改在緩沖池中的頁,然后再以一定的頻率刷新到磁盤上。這就意味著不是每次緩沖池中的頁修改時觸發刷新回磁盤,而是通過checkpoint技術刷新回磁盤。緩沖池的大小配置可通過 innodb_buffer_pool_size來設置。

緩沖池的數據頁類型有:數據頁,索引頁,undo頁,插入緩沖,自適應哈希索引,innodb存儲的鎖信息,字典信息。

現在innodb存儲引擎允許多個緩沖池實例。這樣通過hash到不同緩沖池實例來減少鎖的競爭。該參數可以通過innodb_buffer_pool_instance.

緩沖池是一個很大的內存區域,數據庫通過LRU算法來進行管理。但是因為考慮到全表掃描的操作。因此沒有采用樸素的LRU算法。LRU列表中加入的midpoint位置。新讀取到的頁,并不是直接放到lru列表的首部,而是midpoint位置。默認情況下,在lru列表長度的5/8處。由參數innodb_old_blocks_pct控制。

插入緩沖

對于非聚集索引的插入和更新操作,Innodb存儲引擎并不是直接插入到索引頁中,而是的Insert Buffer。然后再以一定的頻率進行insertbuffer和輔助索引葉子節點的merge。著通常將多個隨機插入合并到一個操作中。大大提高了非聚集索引插入的性能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱芜市| 瑞丽市| 庆元县| 吉安县| 吉首市| 多伦县| 舞阳县| 永康市| 静海县| 新乡市| 独山县| 两当县| 乌苏市| 甘谷县| 措勤县| 昭通市| 陆丰市| 北安市| 拜城县| 平湖市| 昂仁县| 长泰县| 潮安县| 永安市| 澜沧| 沙田区| 玉龙| 尚义县| 靖江市| 滕州市| 方城县| 西乌珠穆沁旗| 中阳县| 阿勒泰市| 揭东县| 贺兰县| 什邡市| 凭祥市| 赤水市| 宕昌县| 浪卡子县|