欧美激情中文字幕在线_国产区精品视频_免费久久99精品国产自_日韩精品 欧美

MySQL多種索引引擎詳解

與其他數(shù)據(jù)庫例如Oracle 和SQL Server等數(shù)據(jù)庫中只有一種存儲引擎不同的是,MySQL有一個被稱為“Pluggable Storage Engine Architecture”(可替換存儲引擎架構(gòu))的特性,也就意味著MySQL數(shù)據(jù)庫提供了多種存儲引擎。用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不同的存儲引擎,用戶也可以根據(jù)自己的需要編寫自己的存儲引擎。MySQL數(shù)據(jù)庫在實際的工作中其實分為了語句分析層和存儲引擎層,其中語句分析層就主要負(fù)責(zé)與客戶端完成連接并且事先分析出SQL語句的內(nèi)容和功能,而存儲引擎層則主要負(fù)責(zé)接收來自語句分析層的分析結(jié)果,完成相應(yīng)的數(shù)據(jù)輸入輸出和文件操作。簡而言之,就是如何存儲數(shù)據(jù)、如何為存儲的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術(shù)的實現(xiàn)方法。因為在關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。

存儲引擎種類

存儲引擎 說明
MyISAM 高速引擎,擁有較高的插入,查詢速度,但不支持事務(wù)
InnoDB 5.5版本后MySQL的默認(rèn)數(shù)據(jù)庫,支持事務(wù)和行級鎖定,比MyISAM處理速度稍慢
ISAM MyISAM的前身,MySQL5.0以后不再默認(rèn)安裝
MRG_MyISAM(MERGE) 將多個表聯(lián)合成一個表使用,在超大規(guī)模數(shù)據(jù)存儲時很有用
Memory 內(nèi)存存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數(shù)據(jù)量成正比的內(nèi)存空間。只在內(nèi)存上保存數(shù)據(jù),意味著數(shù)據(jù)可能會丟失
Falcon 一種新的存儲引擎,支持事物處理,傳言可能是InnoDB的替代者
Archive 將數(shù)據(jù)壓縮后進(jìn)行存儲,非常適合存儲大量的獨立的,作為歷史記錄的數(shù)據(jù),但是只能進(jìn)行插入和查詢操作
CSV CSV 存儲引擎是基于 CSV 格式文件存儲數(shù)據(jù)(應(yīng)用于跨平臺的數(shù)據(jù)交換)

接下來我們就介紹兩種在實際開發(fā)中使用最多的兩種引擎【MyISAM】和【InnoDB】。

MyISAM 引擎

這種引擎是MySQL最早提供的。這種引擎又可以分為靜態(tài)MyISAM、動態(tài)MyISAM 和壓縮MyISAM三種:

靜態(tài)MyISAM:如果數(shù)據(jù)表中的各數(shù)據(jù)列的長度都是預(yù)先固定好的,服務(wù)器將自動選擇這種表類型。因為 數(shù)據(jù)表中每一條記錄所占用的空間都是一樣的,所以這種表存取和更新的效率非常高。當(dāng)數(shù)據(jù)受損時,恢復(fù)工作也比較容易做。

動態(tài)MyISAM:如果數(shù)據(jù)表中出現(xiàn)varchar、xxxtext或xxxBLOB字段時,服務(wù)器將自動選擇這種表類型。相對于靜態(tài)MyISAM,這種表存儲空間比較小,但由于每條記錄的長度不一,所以多次修改數(shù)據(jù)后,數(shù)據(jù)表中的數(shù)據(jù)就可能離散的存儲在內(nèi)存中,進(jìn)而導(dǎo)致執(zhí)行效率下降。同時,內(nèi)存中也可能會出現(xiàn)很多碎片。因此,這種類型的表要經(jīng)常用optimize table 命令或優(yōu)化工具來進(jìn)行碎片整理。

壓縮MyISAM:以上說到的兩種類型的表都可以用myisamchk工具壓縮。這種類型的表進(jìn)一步減小了占用的存儲,但是這種表壓縮之后不能再被修改。另外,因為是壓縮數(shù)據(jù),所以這種表在讀取的時候要先時行解壓縮。

當(dāng)然不管是何種MyISAM表,目前它都不支持事務(wù),行級鎖和外鍵約束的功能,這就意味著有事務(wù)處理需求的表,不能使用MyISAM存儲引擎。MyISAM存儲引擎特別適合在以下幾種情況下使用:

選擇密集型的表。MyISAM存儲引擎在篩選大量數(shù)據(jù)時非常迅速,這是它最突出的優(yōu)點。

插入密集型的表。MyISAM的并發(fā)插入特性允許同時選擇和插入數(shù)據(jù)。

MyISAM表是獨立于操作系統(tǒng)的,這說明可以輕松地將其從Windows服務(wù)器移植到Linux服務(wù)器;每當(dāng)我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表名。 例如我創(chuàng)建了一個【test】表,那么就會生成以下三個文件:

文件名 說明
test.frm 存儲表定義
test.MYD 存儲數(shù)據(jù)
test.MYI 存儲索引

InnoDB引擎

InnoDB表類型可以看作是對MyISAM的進(jìn)一步更新產(chǎn)品,它提供了事務(wù)、行級鎖機(jī)制和外鍵約束的功能。InnoDB的表需要更多的內(nèi)存和存儲,它會在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。 使用InnoDB是最理想的選擇:

更新密集的表:InnoDB存儲引擎特別適合處理多重并發(fā)的更新請求

事務(wù):InnoDB存儲引擎是支持事務(wù)的標(biāo)準(zhǔn)MySQL存儲引擎

自動災(zāi)難恢復(fù):與其它存儲引擎不同,InnoDB表能夠自動從災(zāi)難中恢復(fù)

外鍵約束:MySQL支持外鍵的存儲引擎只有InnoDB

支持自動增加列AUTO_INCREMENT屬性

5. 總結(jié)
InnoDB:支持事務(wù)處理,支持外鍵,支持崩潰修復(fù)能力和并發(fā)控制。如果需要對事務(wù)的完整性要求比較高(比如銀行),要求實現(xiàn)并發(fā)控制(比如售票),那選擇InnoDB有很大的優(yōu)勢。如果需要頻繁的更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB,因為支持事務(wù)的提交(commit)和回滾(rollback)。

MyISAM:插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現(xiàn)處理高效率。如果應(yīng)用的完整性、并發(fā)性要求比較低,也可以使用。

注意,同一個數(shù)據(jù)庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務(wù)處理,可以選擇InnoDB。這個數(shù)據(jù)庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該數(shù)據(jù)庫需要一個用于查詢的臨時表,可以選擇MEMORY存儲引擎。

上一篇 使用OpenSSL,創(chuàng)建本地調(diào)試HTTPS證書
下一篇 使用puppeteer實現(xiàn)瀏覽器自動化
目錄
applek

applek管理員

個人說明在個人中心里面設(shè)置

本月創(chuàng)作熱力圖

最新評論
小超
小超
7月9日
下個版本考慮將下載地址加密(防止采集)
Lvtu
Lvtu
7月4日
qiang厲害
評論于留言建議
chinacnd
chinacnd
6月26日
這個主題是怎么做到加載速度那么快的?
風(fēng)起云涌
風(fēng)起云涌
6月17日
前臺投稿現(xiàn)在有點太抽象了 希望可以弄成那種分區(qū)填寫的 標(biāo)題,內(nèi)容,圖片,目錄,標(biāo)簽,這樣的
評論于留言建議
主站蜘蛛池模板: www.av中文字幕| 深夜福利日韩在线看| 国产精品一区二区免费| 国产精品久在线观看| 欧美精品日韩三级| 久久精品亚洲一区| 一区中文字幕在线观看| 国产精品尤物福利片在线观看| 亚洲精品无码久久久久久| 国产精品国产三级国产aⅴ浪潮| 久久亚洲国产成人| 日韩欧美一级在线| 国产精品初高中精品久久| 久久99精品久久久久久久青青日本| 日韩亚洲综合在线| 91精品国产99| av日韩中文字幕| 国产精品秘入口18禁麻豆免会员| 美女999久久久精品视频| 日韩精品成人一区二区在线观看| 91精品视频网站| 国产成人精品在线| 国产日韩一区二区在线观看| 久久99热精品| 久久精品国产美女| 久久久国产成人精品| 欧美韩国日本精品一区二区三区 | 亚洲欧洲精品在线观看| 国产mv久久久| 国产精品高清在线观看| 国产美女三级视频| 久久精品视频网站| 久久精品99久久| 久久久99国产精品免费| 欧美激情精品久久久| 欧日韩不卡在线视频| 日本免费高清一区| 欧美精品一区二区免费| 免费99精品国产自在在线| 久久手机精品视频| 国产日韩欧美影视|