精品人伦一区二区三区蜜桃视频_日韩精品视频在线_www.色综合_久久久久久一区_aaaaaa黄色片_亚洲精品久久

MySQL多種索引引擎詳解

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

存儲引擎種類

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

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

MyISAM 引擎

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

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

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

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

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

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

插入密集型的表。MyISAM的并發插入特性允許同時選擇和插入數據。

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

文件名 說明
test.frm 存儲表定義
test.MYD 存儲數據
test.MYI 存儲索引

InnoDB引擎

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

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

事務:InnoDB存儲引擎是支持事務的標準MySQL存儲引擎

自動災難恢復:與其它存儲引擎不同,InnoDB表能夠自動從災難中恢復

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

支持自動增加列AUTO_INCREMENT屬性

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

MyISAM:插入數據快,空間和內存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現處理高效率。如果應用的完整性、并發性要求比較低,也可以使用。

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

THE END
主站蜘蛛池模板: 亚洲激情视频在线 | 国产一区二区免费电影 | 久久99精品久久久久久琪琪 | 热99精品视频 | 欧美黑人巨大videos精品 | 91中文视频 | 日本一区二区电影 | 日韩看片| 久久综合激情 | 日本久久久一区二区三区 | 日韩精品在线观看一区二区三区 | 色婷婷一区二区三区四区 | 欧美日韩国产一区二区三区 | 伊人无码高清 | 天天干视频在线 | 中文字幕不卡一区 | 成人影院在线 | 久久国产精品一区 | 一区二区三区四区不卡 | 麻豆av片 | 影音先锋成人资源 | 午夜精品久久久久久久久久久久久 | 亚洲视频 欧美视频 | 四虎永久免费地址 | 国产精品日本一区二区不卡视频 | 日韩视频一区在线观看 | 北条麻妃一区二区三区在线观看 | 中文在线一区二区 | 国产精品污www一区二区三区 | 成人午夜免费福利视频 | 性欧美精品一区二区三区在线播放 | 国产一区三区在线 | 视频一区中文字幕 | 精品视频在线观看 | 久久久亚洲一区 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 羞羞在线视频 | 国产精品不卡视频 | 91九色视频在线 | 日韩av在线播 | 伦理二区|