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

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

ID:8972635

大小:271.19 KB

頁數(shù):18頁

時間:2018-04-13

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

《mysql存儲引擎優(yōu)化》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫

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

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

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

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

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

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

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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