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

mysqldump造成Buffer Pool污染的研究

 更新時(shí)間:2012年10月12日 00:53:21   作者:  
mysqldump造成Buffer Pool污染的研究,需要的朋友可以參考下

前言:

最近Oracle MySQL在其官方Blog上貼出了 5.6中一些變量默認(rèn)值的修改。其中innodb_old_blocks_time 的默認(rèn)值從0替換成了1000(即1s)

關(guān)于該參數(shù)的作用摘錄如下:

how long in milliseconds (ms) a block inserted into the old sublist must stay there after its first access before it can be moved to the new sublist. Increasing this value protects against the buffer pool being filled up by data that is referenced only for a brief period, such as during a full table scan.

其實(shí)作用就是:減小單次的大批量數(shù)據(jù)查詢(類似于mysqldump的行為)對(duì)于BufferPool(下稱BP)的污染。

說到這里就不得不提一下BP的midpoint insert 機(jī)制。

下文就將對(duì)于這個(gè)機(jī)制做一定分析和討論。


一、 Buffer Pool 的insert 機(jī)制

BP可以被認(rèn)為是一條長(zhǎng)鏈表。被分成young 和 old兩個(gè)部分,其中old默認(rèn)占37%的大?。ㄓ?CODE class=literal>innodb_old_blocks_pct 配置)??拷敹说腜age表示最近被放問??拷捕说腜age表示長(zhǎng)時(shí)間未被訪問。而這兩個(gè)部分的交匯處成為midpoint。每當(dāng)有新的Page需要加載到BP時(shí),該page都會(huì)被插入到midpoint的位置,并聲明為old-page。當(dāng)old部分的page,被訪問到時(shí),該page會(huì)被提升到鏈表的頂端,標(biāo)識(shí)為young。

由于table scan的操作是先load page,然后立即觸發(fā)一次訪問。所以當(dāng)innodb_old_blocks_time =0 時(shí),會(huì)導(dǎo)致table scan所需要的page不讀的作為young page被添加到鏈表頂端。而一些使用較為不頻繁的page就會(huì)被擠出BP,使得之后的SQL會(huì)產(chǎn)生磁盤IO,從而導(dǎo)致響應(yīng)速度變慢。這也就是標(biāo)題中所提到的BP污染。

 

二、 修改innodb_old_blocks_time 的效果

percona之前也做過相關(guān)測(cè)試,其結(jié)論是time=0時(shí),正常訪問的吞吐量下降為10%;當(dāng)time=1000時(shí),吞吐量和沒有備份時(shí)的性能一致。

是否真是如此呢,我們來(lái)親自測(cè)試一下。

下面是測(cè)試結(jié)果:

其中concurrency代表sysbench中 --num-threads的數(shù)值。

OPT代表該環(huán)境下,沒有mysqldump時(shí)的sysbench QPS。

余下兩列分別代表有mysqldump時(shí)的sysbench QPS。

Concurrency OPT old_time=0 old_time=1000
1 17394 1836 2141
2 29703 3670 3981
3 47347 5683 6540
4 64717 6805 8337
5 83551 8676 15885
6 99396 12978 19893
7 112330 16491 26022
8 126600 23840 33346
9 138468 30760 39194
10 150365 39034 48925
11 163053 43174 60352
12 174916 52066 70180
13 174160 63853 78076
14 173786 65164 80661
15 174268 70965 90633
16 175044 80871 102629
17 175583 90689 103423
18 175939 94805 112629
19 175114 93303 120625

由結(jié)果可以看出,time=1000并沒有給查詢性能帶來(lái)很大的提升。最佳情況下也只是比time=0時(shí)提高80%的性能。

為什么呢?

其實(shí)不難理解,表中的concurrency很大程度上決定了測(cè)試page的冷熱程度。并發(fā)數(shù)越大,每面產(chǎn)生的并行請(qǐng)求就越多,從而每個(gè)page被訪問的頻率就越高,page在LRU鏈表中的位置也就越靠頂端。反之亦然。

那么我們來(lái)想想下高頻率熱點(diǎn)數(shù)據(jù)訪問時(shí)的情況。這時(shí)雖然mysqldump訪問的page會(huì)不斷加載在LRU頂端,但是高頻度的熱點(diǎn)數(shù)據(jù)訪問會(huì)以更快的速度把page再次搶占到LRU頂端。從而導(dǎo)致mysqldump加載入的page會(huì)被迅速刷下,并立即被evict(淘汰)。因此,time=0或1000對(duì)這種壓力環(huán)境下的訪問不會(huì)造成很大影響,因?yàn)閐ump的數(shù)據(jù)根本搶占不過熱點(diǎn)數(shù)據(jù)。

同樣,超低頻率的數(shù)據(jù)訪問也是一樣的情況。由于數(shù)據(jù)訪問頻度很低,大量的page都處于LRU鏈表的尾端。所以無(wú)論dump的page被加載到head或是midpoint位置,都會(huì)在熱點(diǎn)數(shù)據(jù)的前面。也就是說無(wú)論怎樣,數(shù)據(jù)page都會(huì)被淘汰。所以,這種壓力環(huán)境下的性能同樣不會(huì)隨著time值的配置變化有很大浮動(dòng)。

真正能夠享受到time帶來(lái)的福利的是那些 處于midpoint邊緣的不溫不火的數(shù)據(jù)。

從下圖也可以看出,性能提升最大的情況集中在中等訪問量的情況下,也即 37%的位置上

三、 Mid Point位置帶來(lái)的影響

從之前的分析也可以得出這樣的結(jié)論:innodb_old_blocks_time 的作用范圍對(duì)page的冷熱情況有直接聯(lián)系。而innodb_old_blocks_pct 又決定了BP的數(shù)據(jù)分布。

那么 innodb_old_blocks_pct 的調(diào)節(jié),能夠左右 innodb_old_blocks_time的影響范圍。

上圖的曲線也證明了這樣的觀點(diǎn)。當(dāng)innodb_old_blocks_pct 調(diào)節(jié)到60%時(shí),波峰也相應(yīng)平移到了 60%的位置。

總結(jié):
1. innodb_old_blocks_time =1000 一定程度上可以降低mysqldump類型的訪問對(duì)數(shù)據(jù)庫(kù)性能帶來(lái)的影響。
2. innodb_old_blocks_time =1000 的優(yōu)化效果有限,對(duì)于處于midpoint附近的page能帶來(lái)最大的提升效果。

相關(guān)文章

  • MySQL表類型 存儲(chǔ)引擎 的選擇

    MySQL表類型 存儲(chǔ)引擎 的選擇

    這篇文章主要介紹了MySQL表類型存儲(chǔ)引擎的選擇,文章圍繞MySQL表類型存儲(chǔ)引擎的選擇的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • mysql中的limit 1 for update的鎖類型

    mysql中的limit 1 for update的鎖類型

    這篇文章主要介紹了mysql中的limit 1 for update的鎖類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL表內(nèi)連和外連的具體使用

    MySQL表內(nèi)連和外連的具體使用

    我們?cè)谑褂肕ySQL的時(shí)候,經(jīng)常涉及到內(nèi)連接和外連接的應(yīng)用,本文就來(lái)詳細(xì)的介紹一下MySQL表內(nèi)連和外連的具體使用,感興趣的可以了解一下
    2023-10-10
  • MySQL InnoDB MRR優(yōu)化指南

    MySQL InnoDB MRR優(yōu)化指南

    這篇文章主要給大家介紹了關(guān)于MySQL InnoDB MRR優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • MySQL?中的count(*)?與?count(1)?誰(shuí)更快一些?

    MySQL?中的count(*)?與?count(1)?誰(shuí)更快一些?

    這篇文章主要討論MySQL?中?count(*)?與?count(1)?誰(shuí)更快一些?以下討論基于?InnoDB?存儲(chǔ)引擎,并且再文末單獨(dú)說一下MyISAM?,感興趣的小伙伴可以參考一下
    2022-02-02
  • 淺談一下MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別

    淺談一下MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別

    這篇文章主要介紹了MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別,存儲(chǔ)引擎是MySQL中特有的一個(gè)術(shù)語(yǔ),其它數(shù)據(jù)庫(kù)中沒有,實(shí)際上存儲(chǔ)引擎是一個(gè)表存儲(chǔ)/組織數(shù)據(jù)的方式,今天就跟小編來(lái)看看MyISAM和InnoDB存儲(chǔ)引擎的區(qū)別,需要的朋友可以參考下
    2023-04-04
  • Navicat for Mysql 字段注釋中文亂碼問題及解決

    Navicat for Mysql 字段注釋中文亂碼問題及解決

    這篇文章主要介紹了Navicat for Mysql 字段注釋中文亂碼問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Mysql Data目錄和 Binlog 目錄 搬遷的方法

    Mysql Data目錄和 Binlog 目錄 搬遷的方法

    剛開始安裝時(shí)使用了默認(rèn)目錄,使用一段時(shí)間,數(shù)據(jù)慢慢變?cè)?,發(fā)現(xiàn)當(dāng)前設(shè)置的目錄空間不夠時(shí),就要搬遷數(shù)據(jù)到另一個(gè)目錄了
    2011-10-10
  • linux(Centos7)下安裝mysql8.0.18的教程圖解

    linux(Centos7)下安裝mysql8.0.18的教程圖解

    這篇文章主要介紹了linux(Centos7)安裝mysql8.0.18的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • mariadb集群搭建---Galera Cluster+ProxySQL教程

    mariadb集群搭建---Galera Cluster+ProxySQL教程

    這篇文章主要介紹了mariadb集群搭建---Galera Cluster+ProxySQL教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

九龙城区| 怀宁县| 亳州市| 突泉县| 略阳县| 佛坪县| 尉犁县| 乌拉特中旗| 宁南县| 昭苏县| 姜堰市| 琼海市| 诸城市| 天全县| 金昌市| 浑源县| 天台县| 宁蒗| 凤翔县| 萨嘎县| 澎湖县| 榆社县| 贡觉县| 桂阳县| 于都县| 高青县| 清河县| 浦江县| 信丰县| 昔阳县| 马龙县| 灌南县| 渝北区| 淳化县| 普兰店市| 辽宁省| 淄博市| 葵青区| 卫辉市| 南丹县| 阳泉市|