mysql存儲(chǔ)引擎優(yōu)化

mysql存儲(chǔ)引擎優(yōu)化

ID:8972635

大小:271.19 KB

頁數(shù):18頁

時(shí)間:2018-04-13

mysql存儲(chǔ)引擎優(yōu)化_第1頁
mysql存儲(chǔ)引擎優(yōu)化_第2頁
mysql存儲(chǔ)引擎優(yōu)化_第3頁
mysql存儲(chǔ)引擎優(yōu)化_第4頁
mysql存儲(chǔ)引擎優(yōu)化_第5頁
資源描述:

《mysql存儲(chǔ)引擎優(yōu)化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、存儲(chǔ)引擎優(yōu)化MyISAM存儲(chǔ)引擎優(yōu)化我們知道,MyISAM存儲(chǔ)引擎是MySQL最為古老的存儲(chǔ)引擎之一,也是最為流行的存儲(chǔ)引擎之一。對(duì)于以讀請(qǐng)求為主的非事務(wù)系統(tǒng)來說,MyISAM存儲(chǔ)引擎由于其優(yōu)異的性能表現(xiàn)及便利的維護(hù)管理方式無疑是大家最優(yōu)先考慮的對(duì)象。我們將通過分析MyISAM存儲(chǔ)引擎的相關(guān)特性,來尋找提高M(jìn)yISAM存儲(chǔ)引擎性能的優(yōu)化策略。索引緩存優(yōu)化MyISAM存儲(chǔ)引擎的緩存策略是其和很多其他數(shù)據(jù)庫乃至MySQL數(shù)據(jù)庫的很多其他存儲(chǔ)引擎不太一樣的最大特性。因?yàn)樗麅H僅緩存索引數(shù)據(jù),并不會(huì)緩存實(shí)際的表數(shù)據(jù)信息到內(nèi)存中,而是將這一工作交給了OS級(jí)別的文件系統(tǒng)緩存。所以,在數(shù)據(jù)

2、庫優(yōu)化中非常重要的優(yōu)化環(huán)節(jié)之一“緩存優(yōu)化”的工作在使用MyISAM存儲(chǔ)引擎的數(shù)據(jù)庫的情況下,就完全集中在對(duì)索引緩存的優(yōu)化上面了。在分析優(yōu)化索引緩存策略之前,我們先大概了解一下MyISAM存儲(chǔ)引擎的索引實(shí)現(xiàn)機(jī)制以及索引文件的存放格式。MyISAM存儲(chǔ)引擎的索引和數(shù)據(jù)是分開存放于“.MYI”文件中,每個(gè)“.MYI”文件由文件頭和實(shí)際的索引數(shù)據(jù)。“.MYI”的文件頭中主要存放四部分信息,分別稱為:state(主要是整個(gè)索引文件的基本信息),base(各個(gè)索引的相關(guān)信息,主要是索引的限制信息),keydef(每個(gè)索引的定義信息)和recinfo(每個(gè)索引記錄的相關(guān)信息)。在文件頭后

3、面緊接著的就是實(shí)際的索引數(shù)據(jù)信息了。索引數(shù)據(jù)以Block(Page)為最小單位,每個(gè)block中只會(huì)存在同一個(gè)索引的數(shù)據(jù),這主要是基于提高索引的連續(xù)讀性能的目的。在MySQL中,索引文件中索引數(shù)據(jù)的block被稱為IndexBlock,每個(gè)IndexBlock的大小并不一定相等。在“.MYI”中,IndexBlock的組織形式實(shí)際上只是一種邏輯上的,并不是物理意義上的。在物理上,實(shí)際上是以FileBlock的形式來存放在磁盤上面的。在KeyCache中緩存的索引信息是以“CacheBlock”的形式組織存放的,“CacheBlock”是相同大小的,和“.MYI”文件物理存儲(chǔ)

4、的Block(FileBlock)一樣。在一條Query通過索引檢索表數(shù)據(jù)的時(shí)候,首先會(huì)檢查索引緩存(key_buffer_cache)中是否已經(jīng)有需要的索引信息,如果沒有,則會(huì)讀取“.MYI”文件,將相應(yīng)的索引數(shù)據(jù)讀入KeyCache中的內(nèi)存空間中,同樣也是以Block形式存放,被稱為CacheBlock。不過,數(shù)據(jù)的讀入并不是以IndexBlock的形式來讀入,而是以FileBlock的形式來讀入的。以FileBlock形式讀入到KeyCache之后的CacheBlock實(shí)際上是于FileBlock完全一樣的。如下圖所示:當(dāng)我們從“.MYI”文件中讀入FileBlock

5、到KeyCache中CacheBlock時(shí)候,如果整個(gè)KeyCache中已經(jīng)沒有空閑的CacheBlock可以使用的話,將會(huì)通過MySQL實(shí)現(xiàn)的LRU相關(guān)算法將某些CacheBlock清除出去,讓新進(jìn)來的FileBlock有地方呆。我們先來分析一下與MyISAM索引緩存相關(guān)的幾個(gè)系統(tǒng)參數(shù)和狀態(tài)參數(shù):◆key_buffer_size,索引緩存大??;這個(gè)參數(shù)用來設(shè)置整個(gè)MySQL中的常規(guī)KeyCache大小。一般來說,如果我們的MySQL是運(yùn)行在32位平臺(tái)紙上,此值建議不要超過2GB大小。如果是運(yùn)行在64位平臺(tái)紙上則不用考慮此限制,但也最好不要超過4GB。◆key_buffer

6、_block_size,索引緩存中的CacheBlockSize;在前面我們已經(jīng)介紹了,在KeyCache中的所有數(shù)據(jù)都是以CacheBlock的形式存在,而key_buffer_block_size就是設(shè)置每個(gè)CacheBlock的大小,實(shí)際上也同時(shí)限定了我們將“.MYI”文件中的IndexBlock被讀入時(shí)候的FileBlock的大小?!鬹ey_cache_division_limit,LRU鏈表中的HotArea和WarmArea分界值;實(shí)際上,在MySQL的KeyCache中所使用的LRU算法并不像傳統(tǒng)的算法一樣僅僅只是通過訪問頻率以及最后訪問時(shí)間來通過一個(gè)唯一的鏈

7、表實(shí)現(xiàn),而是將其分成了兩部分。一部分用來存放使用比較頻繁的HotCackeLock(HotChain),被成為HotArea,另外一部分則用來存放使用不是太頻繁的WarmCacheBlock(WarmChain),被成為WarmArea。這樣做的目的主要是為了保護(hù)使用比較頻繁的CacheBlock更不容易被換出。而key_cache_division_limit參數(shù)則是告訴MySQL該如何劃分整個(gè)CacheChain劃分為HotChain和WarmChain兩部分,參數(shù)值為WarmChain占整個(gè)Chain的百分比

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。