14.6.3.1 The InnoDB Buffer Pool

14.6.3.1 The InnoDB Buffer PoolInnoDB 保持一個存儲區域被稱為buffer pool 用于cache數據和索引在內存里,知道InnoDB buffer pool 如何工作,利用它來保持頻繁訪問的數據在內存里,是MYSQL 調優的一個重要方面。你可以配置InnoDB buffer pool的各個方面來改善性能:理想情況下,你設置buffer pool的大小為實際最大值,留下足夠的內存用于其他進程在服務器上運行而沒有產生分頁。buffer pool越大, InnoDB 表位越像是內存數據庫,從磁盤讀取一次然后從內存訪問數據在隨后的讀操作。Buffer pool size  是使用 innodb_buffer_pool_size 配置選項2.  隨著64位系統使用大的內存,你可以把buffer 分成多個部分,以盡量減少內存結果的沖突在并發操作期間。3.你可以保持頻繁訪問的數據在內存里 盡管突然的高峰活動對于備份或者報告操作4.你可以控制何時如何InnoDB 執行魚肚請求來預獲取Pages異步到buffer pool,預計 pages 馬上被需要5. 你可以控制當background刷新舊的pages發生,是否InnoDB 動態調整 基于負載的刷新頻率。6.你可以配置InnoDB 來保持當前的buffer pool 狀態來避免一個漫長的準備期在一個server 重啟后。你也可以保留當前的buffer pool 狀態 當server 在運行時InnoDB Buffer Pool LRU AlgorithmInnoDB 管理buffer pool 作為一個列表,使用一個變化的LRU算法。當room 是被需要增加一個新的page 到pool,InnoDB 驅逐最少使用的pages增加新的pages到列表的中間。這個 中間插入的策略 對待列表作為兩個清單1.在頭部,  新的(或者年輕的)的一個子列表 被頻繁訪問2.在尾部, 一個老的pages 的一個子列表很少被訪問這個算法保持pages  大量使用通過查詢在新的子列表老的子列表包含更少使用的頁, 這些是候選為被驅逐LRU 算法操作默認如下:1.buffer pool的3/8 是分給old sublist2. 列表的中間是邊界新的sublist的尾部和 old sublist的開頭3.當InnoDB 讀取一個Page到buffer pool,他初始插入在中間(old sublist的頭部).一個page 可以讀進來 因為它是被需要用于一個用戶指定的操作比如SQL查詢,或者 作為預讀的一部分被InnoDB自動執行4.訪問一個page 在old sublist 讓這個Page變的年輕,移動到 buffer pool的head(new sublist的頭部)如果page 因為需要被讀取, 第一次訪問立即發生 page變的yong.如果page 被讀進來由于預讀, 第一訪問不立即發生5.在進行數據庫操作時, pages在buffer pool不被訪問 變老移動到列表的尾部。Pages 在new和old 子列表 老化其他pages變成新的。6.默認的, pages被查詢讀取立即移動到new sublist,意味著他們會在buffer pool中停留很長時間。一個表掃描(比如執行一個mysqldump操作),或者一個SELECT 語句沒有帶WHERE條件)可以帶來大量的數據到buffer pool ,驅逐等量的older數據,即使新的數據不會被再次使用。類似的,pages是通過后臺線程加載的 只訪問一次 移動到new list的head.這些情況回把平凡使用的pages移動到old sublist.InnoDB Buffer Pool Configuration Options  InnoDB Buffer Pool 配置選項幾個配置選項影響InnoDB buffer pool的不同方面:1.innodb_buffer_pool_size指定buffer pool的大小, 如果buffer pool是太小了你有足夠的內存,讓buffer pool變大能改善性能通過降低磁盤I/O的總量zabbix:/root/Esx# cat /etc/my.cnf  | grep innodb_buffer_pool_size
innodb_buffer_pool_size=4G2.innodb_buffer_pool_instances把buffer pool 分成一個用戶指定的單獨的區域, 每個有它自己的LRU list和相關的數據結構,降低競爭在并發內存讀取和寫操作。這個選項只有當innodb_buffer_pool_size 值大于1GB才生效。總的buffer pool的代銷是被分成多個buffer pool.為了最好的性能, 指定innodb_buffer_pool_instances and innodb_buffer_pool_size的組合這樣每個buffer pool 實例有至少1GBmysql> show variables like '%innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF            |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 8              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | OFF            |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 4294967296     |
+-------------------------------------+----------------+
8 rows in set (0.01 sec)innodb_old_blocks_pct;指定 buffer pool近似的比例 InnoDB 使用old block sublist.范圍是從5到95,默認是37(3/8的pool大小)mysql> show variables like '%innodb_old_blocks_pct%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_old_blocks_pct | 37    |
+-----------------------+-------+
1 row in set (0.00 sec)innodb_old_blocks_time:指定多久單位毫秒一個page 插入到old sublist 必須留在那個在他第一次訪問后在他可以被移動到new sublist如果值是0, 一個page 插入到old sublist 立即移動到新的sublist  當它第一次被訪問后。如果值大于0, pages 停留在old sublist 知道一個訪問發生至少多少毫秒后第一次被訪問。比如,值為1000 導致pages停留在old sublist 1秒鐘 在首次訪問后 在它們變的合格移動到new sublistmysql> show variables like '%innodb_old_blocks_time%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| innodb_old_blocks_time | 1000  |
+------------------------+-------+
1 row in set (0.00 sec)設置 innodb_old_blocks_time 大于0防止一次表掃描充滿new sublist 記錄在一個Page讀進來后一個掃描可以訪問很多次,但是page是不能使用在那以后。如果 innodb_old_blocks_time 是設置一個值大于處理page的時間,page停留在old sublist,老化到列表的尾部 被快速淘汰。這種方式, pages只使用一次掃描不影響大量使用的pages在new sublistinnodb_old_blocks_time  可以設置在運行時間,這樣你可以臨時改變 當操作需要表掃描或者dumpsinnodb_read_ahead_threshold控制  預讀的靈敏度,InnoDB 使用預取pages到buffer poolinnodb_random_read_ahead讓隨機的預讀技術用于預取pages到buffer pool.mysql> show variables like '%innodb_random_read_ahead%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_random_read_ahead | OFF   |
+--------------------------+-------+
1 row in set (0.00 sec)innodb_adaptive_flushing

轉載于:https://www.cnblogs.com/zhaoyangjian724/p/6199027.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285566.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言試題105之要求輸出國際象棋棋盤

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:要求輸出國際象棋棋盤。 分析:用 i 控制行,j 來控制列,根據 i+j 的和的變化來控制…

一個js的動畫,以前以為只有flash可以實現

11年剛干這行的時候,看到這種什么百葉窗的動畫,以為都是flash實現的,最近突然靈光一閃,想到了用js實現(雖然我不是做前端的,本人做.net)。代碼雖然實現了,但是比較亂,先上…

[轉]docker入門(利用docker部署web應用)

前言:本課程是在慕課網上學習 第一個docker化的java應用 課程時所做的筆記,供本人復習之用 目錄 第一章 什么是docker 1.1 docker的發展史 1.2 docker國內應用史 1.3 什么是Docker 第二章 了解docker 2.1 docker思想 2.1.1 集裝箱 2.1.2 標準化 2.1.3 隔離 2.2 dock…

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(五)

【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(一) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(二) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(三) 【專升本計算機】2021年甘肅省專升本計算機全真模擬試題(四) 【專升本計算機】2021…

如何讓 EF Core 6 支持 DateOnly 類型

前言上次,我們發現《DateOnly 和 TimeOnly 類型居然不能序列化》。但問題還不僅僅如此。問題重現假設有下列實體類:public class User {public int Id { get; set; }public string Name { get; set; } public DateOnly Birthday { get; set; } }由…

yii2筆記: 單元測試

使用composer方式安裝yii2-app-basic (https://github.com/yiisoft/yii2-app-basic/blob/master/README.md) 裝好后既可以使用 建一個Model文件EntryForm.php在models目錄下 <?phpnamespace app\models;use Yii; use yii\base\Model;class EntryForm extends Model {public…

[轉]Python 列表(List) 的三種遍歷(序號和值)方法

if __name__ __main__:list [html, js, css, python]for i in list:print(list.index(i), i)# 方法1print( 遍歷列表方法1&#xff1a;)for i in list:print ("序號&#xff1a;%s 值&#xff1a;%s" % (list.index(i) 1, i))print (\n遍歷列表方法2&#xff1a;)…

C語言試題103之輸出特殊圖案,請在 c 環境中運行,看一看

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸出特殊圖案,請在 c 環境中運行,看一看 2 、溫馨提示 想獲取更多C語言題目請猛搓這…

Web頁面獲取用戶控件頁面中服務器控件的值

用戶控件頁面后臺&#xff1a; public string P_Name{get { return txt_P_name.Value; }set { txt_P_name.Value value; }} Web頁面后臺&#xff1a; if (head.P_Name ! "")//head為用戶控件的標簽名{strwhere " and a.P_NAME like %" head.P_Name &qu…

【C#程序設計】教學講義——第一章:C#語言概述

文章目錄 1.1 認識Visual C#1.2 .NET Framework 3.51.3 Visual C# 2008集成開發環境1.4 使用幫助系統1.5 用C#創建Windows應用程序1.6 用C#創建控制臺應用程序1.1 認識Visual C# 1.1.1 C#語言的由來 1.C和C++ 一直是商業軟件開發領域中最具有生命力的語言; 利用C和C++語言開…

Kafka學習征途:基于Docker搭建Kafka環境

【Kafka】| 總結/Edison Zhou1準備工作這里我們使用一臺Linux CentOS系統的服務器來模擬三個Kafka Broker的偽集群&#xff08;即一臺server上開三個不同端口&#xff09;環境用于學習測試&#xff0c;大概的準備工作有兩個&#xff1a;安裝Docker# wget https://mirrors.aliyu…

C語言試題104之輸出 9乘9 口訣

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸出 9乘9 口訣。 分析:分行與列考慮,共 9 行 9 列,i 控制行,j 控制列 2 、溫馨提…

160809308周子濟第7次作業

#include<stdio.h> #include<string.h> int main() {char name[20];int length,i,count[26]{0};printf("輸自己名拼音&#xff1a;");scanf("%s",name);lengthstrlen(name);for(i0;i<length;i)count[name[i]-a];for(i0;i<26;i)printf(&…

【Envi風暴】基于ENVI平臺提取ASTER DEM完整操作步驟(附案例數據)

本文講解在Envi平臺上,基于Aster影像數據,提取DEM的完整操作流程及注意事項,附實驗數據下載練習。 文章目錄 一、內容和目的二、提取DEM的原理三、ENVI平臺提取DEM流程四、DEM質量評估五、注意事項六、案例數據下載地址一、內容和目的 采用ASTER立體像對提取DEM,數據源: …

HashCode和hashMap、hashTable

2019獨角獸企業重金招聘Python工程師標準>>> 什么是哈希碼(HashCode) 在Java中&#xff0c;哈希碼代表對象的特征。 例如對象 String str1 “aa”, str1.hashCode 3104 String str2 “bb”, str2.hashCode 3106 String str3 “aa”, str3.hashCode 3104 根據Hash…

在OpenCloudOS使用snap安裝.NET 6

開源操作系統社區 OpenCloudOS 由騰訊與合作伙伴共同倡議發起&#xff0c;是完全中立、全面開放、安全穩定、高性能的操作系統及生態。OpenCloudOS 沉淀了多家廠商在軟件和開源生態的優勢&#xff0c;繼承了騰訊在操作系統和內核層面超過10年的技術積累&#xff0c;在云原生、穩…

C語言試題108之打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數 本身。例如:153 是一個“水仙花數”,因為 153=1 的三次方+5 的三次方+3 的三次方。

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該…

code vs1517 求一次函數解析式(數論 純數學知識)

1517 求一次函數解析式 時間限制: 1 s空間限制: 128000 KB題目等級 : 白銀 Silver題解查看運行結果題目描述 Description相信大家都做過練習冊上的這種 題吧&#xff1a; 已知一個一次函數的圖像經過點&#xff08;x1,y1&#xff09;、&#xff08;x2,y2&#xff09;,求該函數的…

【ArcGIS風暴】ArcGIS Editor for OSM中文教程(1):軟件下載及安裝

OpenStreetMap ArcGIS編輯器允許你使用ArcGIS工具為OpenStreetMap數據工作。這個桌面工具允許你加載OpenStreetMap數據并將其存儲在地理數據庫中 。你可以使用ArcMap熟悉的編輯環境的創建,修改,做網絡分析,或者更新數據。一旦您完成編輯后,你可以回到編輯修改OSM使它們提供…

使用Scrapy時出現雖然隊列里有很多Request但是卻不下載,造成假死狀態

2019獨角獸企業重金招聘Python工程師標準>>> DOWNLOAD_TIMEOUT Default: 180 The amount of time (in secs) that the downloader will wait before timing out. Note This timeout can be set per spider using download_timeoutspider attribute and per-request …