資源描述:
《MySQL數(shù)據(jù)庫存儲引擎探究》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、MySQL數(shù)據(jù)庫存儲引擎探究摘要:介紹了MySQL數(shù)據(jù)庫存儲引擎及其分類,并就最常用的MyISAM和InnoDB兩種存儲引擎展開研究分析,通過性能測試探究其使用特點,為用戶選擇合適的數(shù)據(jù)存儲方式提供參考依據(jù)。關(guān)鍵詞:存儲引擎;MyISAM;InnoDB中圖分類號:TP391文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2012)012-0129-03MySQL數(shù)據(jù)庫以其簡單高效可靠的特點,在最近幾年的時間內(nèi)從一個不出名的小型數(shù)據(jù)庫系統(tǒng),變成一個可廣泛應(yīng)用在嵌入式系統(tǒng)、Web網(wǎng)站以及企業(yè)級系統(tǒng)的開源數(shù)據(jù)庫管理系統(tǒng),其成績是眾所周知的。究其原因后不難發(fā)現(xiàn),其一是開源,優(yōu)點是可獲得較快的用戶使用速
2、度,開發(fā)方可獲得較低的管理運營成本,可突破應(yīng)用平臺的局限;其二是操作數(shù)據(jù)庫的實現(xiàn)機制,MySQL數(shù)據(jù)庫主要體現(xiàn)在支持插件式存儲引擎,并且數(shù)據(jù)查詢及事務(wù)處理的單項執(zhí)行效率均優(yōu)于大型數(shù)據(jù)庫系統(tǒng)。本文就存儲引擎的特點及分類進(jìn)行比較分析,為用戶選擇合適的數(shù)據(jù)庫數(shù)據(jù)表示方式提供參考。1存儲引擎及其類別分析1.1存儲引擎存儲引擎是存儲數(shù)據(jù)、為存儲的數(shù)據(jù)建立索引以及更新、查詢數(shù)據(jù)等技術(shù)的實現(xiàn)方法。因為在關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲是以表的形式存儲,所以存儲引擎也可以稱為表類型(即存儲和操作表的類型)。在Oracle和SQLServer等數(shù)據(jù)庫中只有一種存儲引擎,所有數(shù)據(jù)存儲管理機制都一樣。而MySQL數(shù)據(jù)庫提
3、供了多種存儲引擎。用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不同的存儲引擎,用戶也可以根據(jù)具體的需求編寫自定義存儲引擎。1.2分類MySQL數(shù)據(jù)庫提供了多種存儲引擎(在phpMyAdmin界面中單擊“引擎”選項,就會顯示當(dāng)前數(shù)據(jù)庫支持的存儲引擎),如表1所示。其中使用最廣泛的是MyISAM和InnoDB兩種存儲引擎。MyISAM是MySQL早期的ISAM存儲引擎的升級版本,也是MySQL默認(rèn)的存儲引擎,而InnoDB是由第三方軟件公司Innobase所開發(fā),其最大的特點是提供事務(wù)控制的特性,所以使用者也很廣泛。其它存儲引擎相對來說使用機會少一些,都是應(yīng)用于某些特定的場景:NDBCluster雖然也
4、支持事務(wù)處理,但主要用于分布式環(huán)境,屬于一種sharenothing體系的分布式數(shù)據(jù)庫存儲引擎;Maria是MySQL最新開發(fā)的對MyISAM的升級版存儲引擎;Falcon是MySQL公司自行研發(fā)的一款帶有事務(wù)等高級特性的數(shù)據(jù)庫存儲引擎,目前正在研發(fā)階段;Memory存儲引擎所有數(shù)據(jù)和索引均存儲于內(nèi)存中,并使用散列索引,所以數(shù)據(jù)存取速度非???,因此主要用于臨時表,或者對性能要求較高的場景;Archive是一個數(shù)據(jù)經(jīng)過高比例壓縮存放的存儲引擎,主要用于日志記錄和聚合分析,不支持索弓I;Merge和Federated在嚴(yán)格意義上來說,并不能算作一個存儲引擎。因為Merge存儲引擎主要用于將幾個
5、基表連接到一起,對外作為一個表來提供服務(wù),基表可以基于其它的幾個存儲引擎;而Federated主要用于遠(yuǎn)程存取其它MySQL服務(wù)器上的數(shù)據(jù)。1.3MyISAM存儲引擎MyISAM存儲引擎是MySQL最早提出并使用的存儲引擎,其優(yōu)點是對表數(shù)據(jù)的存取、查詢、更新效率高。該存儲引擎根據(jù)應(yīng)用數(shù)據(jù)的特點不同分為靜態(tài)MyISAM.動態(tài)MyISAM和壓縮MyISAM3種:靜態(tài)MyISAM,數(shù)據(jù)特點是:如果數(shù)據(jù)表中的各數(shù)據(jù)列的長度都是預(yù)先固定好的,服務(wù)器將自動選擇這種表類型。因為數(shù)據(jù)表中每一條記錄所占用的空間都是一樣的,所以這種表存取和更新的效率非常高。當(dāng)數(shù)據(jù)受損時,恢復(fù)也比較容易。動態(tài)MyISAM,數(shù)據(jù)
6、特點是:如果數(shù)據(jù)表中出現(xiàn)varchartext或BLOB字段時,服務(wù)器將自動選擇這種表類型。相對于靜態(tài)MyISAM,這種表存儲空間比較小,但由于每條記錄的長度不一,所以多次修改數(shù)據(jù)后,數(shù)據(jù)表中的數(shù)據(jù)就可能離散地存儲在內(nèi)存中,進(jìn)而導(dǎo)致執(zhí)行效率下降。同時,內(nèi)存中也可能會出現(xiàn)很多碎片。因此,這種類型的表要經(jīng)常用optimizetable命令或優(yōu)化工具來進(jìn)行碎片整理。壓縮MyISAM,數(shù)據(jù)特點是:以上說到的兩種類型的表都可以用myisamchk工具壓縮。這種類型的表進(jìn)一步減小了占用的空間,但是這種表壓縮之后不能再被修改。另外,因為是壓縮數(shù)據(jù),所以這種表在讀取的時候要先實行解壓縮。因此執(zhí)行效率較低。
7、不管是何種MyISAM表,目前它都不支持事務(wù)、行級鎖和外鍵約束的功能。1.4InnoDB存儲引擎相比MyISAM,InnoDB具有支持事務(wù)、行級鎖和外鍵約束等功能。(1)支持事務(wù)安全。Innodb存儲引擎最重要的一點就是對事務(wù)安全的支持,這也是讓它成為最流行的存儲引擎很重要的原因,而且實現(xiàn)了SQL92標(biāo)準(zhǔn)所定義的4個級別(READUNCOMMITTED,READCOMMITTED,REPEATABLEREAD,SERIA