深入理解MySQL的數(shù)據(jù)庫引擎的類型
更新時間:2013年06月06日 10:15:06 作者:
本篇文章是對MySQL的數(shù)據(jù)庫引擎的類型進行了詳細(xì)的分析介紹,需要的朋友參考下
你能用的數(shù)據(jù)庫引擎取決于mysql在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個引擎:ISAM、MYISAM和HEAP。另外兩種類型INNODB和BERKLEY(BDB),也常??梢允褂谩?
ISAM
ISAM是一個定義明確且歷經(jīng)時間考驗的數(shù)據(jù)表格管理方法,它在設(shè)計之時就考慮到數(shù)據(jù)庫被查詢的次數(shù)要遠(yuǎn)大于更新的次數(shù)。因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲資源。ISAM的兩個主要不足之處在于,它不支持事務(wù)處理,也不能夠容錯:如果你的硬盤崩潰了,那么數(shù)據(jù)文件就無法恢復(fù)了。如果你正在把ISAM用在關(guān)鍵任務(wù)應(yīng)用程序里,那就必須經(jīng)常備份你所有的實時數(shù)據(jù),通過其復(fù)制特性,MYSQL能夠支持這樣的備份應(yīng)用程序。
MYISAM
MYISAM是MYSQL的ISAM擴展格式和缺省的數(shù)據(jù)庫引擎。除了提供ISAM里所沒有的索引和字段管理的大量功能,MYISAM還使用一種表格鎖定的機制,來優(yōu)化多個并發(fā)的讀寫操作。其代價是你需要經(jīng)常運行OPTIMIZE TABLE命令,來恢復(fù)被更新機制所浪費的空間。MYISAM還有一些有用的擴展,例如用來修復(fù)數(shù)據(jù)庫文件的MYISAMCHK工具和用來恢復(fù)浪費空間的MYISAMPACK工具。
MYISAM強調(diào)了快速讀取操作,這可能就是為什么MYSQL受到了WEB開發(fā)如此青睞的主要原因:在WEB開發(fā)中你所進行的大量數(shù)據(jù)操作都是讀取操作。所以,大多數(shù)虛擬主機提供商和INTERNET平臺提供商只允許使用MYISAM格式。
HEAP
HEAP允許只駐留在內(nèi)存里的臨時表格。駐留在內(nèi)存使得HEAP比ISAM和MYISAM的速度都快,但是它所管理的數(shù)據(jù)是不穩(wěn)定的,而且如果在關(guān)機之前沒有進行保存,那么所有的數(shù)據(jù)都會丟失。在數(shù)據(jù)行被刪除的時候,HEAP也不會浪費大量的空間,HEAP表格在你需要使用SELECT表達式來選擇和操控數(shù)據(jù)的時候非常有用。要記住,用完表格后要刪除表格。
INNODB和BERKLEYDB
INNODB和BERKLEYDB(BDB)數(shù)據(jù)庫引擎都是造就MYSQL靈活性的技術(shù)的直接產(chǎn)品,這項技術(shù)就是MySql++ API。在使用MySql的時候,你所面對的每一個挑戰(zhàn)幾乎都源于ISAM和MYIASM數(shù)據(jù)庫引擎不支持事務(wù)處理也不支持外來鍵。盡管要比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了對事務(wù)處理和外來鍵的支持,這兩點都是前兩個引擎所沒有的。如前所述,如果你的設(shè)計需要這些特性中的一者或者兩者,那你就要被迫使用后兩個引擎中的一個了。
ISAM
ISAM是一個定義明確且歷經(jīng)時間考驗的數(shù)據(jù)表格管理方法,它在設(shè)計之時就考慮到數(shù)據(jù)庫被查詢的次數(shù)要遠(yuǎn)大于更新的次數(shù)。因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲資源。ISAM的兩個主要不足之處在于,它不支持事務(wù)處理,也不能夠容錯:如果你的硬盤崩潰了,那么數(shù)據(jù)文件就無法恢復(fù)了。如果你正在把ISAM用在關(guān)鍵任務(wù)應(yīng)用程序里,那就必須經(jīng)常備份你所有的實時數(shù)據(jù),通過其復(fù)制特性,MYSQL能夠支持這樣的備份應(yīng)用程序。
MYISAM
MYISAM是MYSQL的ISAM擴展格式和缺省的數(shù)據(jù)庫引擎。除了提供ISAM里所沒有的索引和字段管理的大量功能,MYISAM還使用一種表格鎖定的機制,來優(yōu)化多個并發(fā)的讀寫操作。其代價是你需要經(jīng)常運行OPTIMIZE TABLE命令,來恢復(fù)被更新機制所浪費的空間。MYISAM還有一些有用的擴展,例如用來修復(fù)數(shù)據(jù)庫文件的MYISAMCHK工具和用來恢復(fù)浪費空間的MYISAMPACK工具。
MYISAM強調(diào)了快速讀取操作,這可能就是為什么MYSQL受到了WEB開發(fā)如此青睞的主要原因:在WEB開發(fā)中你所進行的大量數(shù)據(jù)操作都是讀取操作。所以,大多數(shù)虛擬主機提供商和INTERNET平臺提供商只允許使用MYISAM格式。
HEAP
HEAP允許只駐留在內(nèi)存里的臨時表格。駐留在內(nèi)存使得HEAP比ISAM和MYISAM的速度都快,但是它所管理的數(shù)據(jù)是不穩(wěn)定的,而且如果在關(guān)機之前沒有進行保存,那么所有的數(shù)據(jù)都會丟失。在數(shù)據(jù)行被刪除的時候,HEAP也不會浪費大量的空間,HEAP表格在你需要使用SELECT表達式來選擇和操控數(shù)據(jù)的時候非常有用。要記住,用完表格后要刪除表格。
INNODB和BERKLEYDB
INNODB和BERKLEYDB(BDB)數(shù)據(jù)庫引擎都是造就MYSQL靈活性的技術(shù)的直接產(chǎn)品,這項技術(shù)就是MySql++ API。在使用MySql的時候,你所面對的每一個挑戰(zhàn)幾乎都源于ISAM和MYIASM數(shù)據(jù)庫引擎不支持事務(wù)處理也不支持外來鍵。盡管要比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了對事務(wù)處理和外來鍵的支持,這兩點都是前兩個引擎所沒有的。如前所述,如果你的設(shè)計需要這些特性中的一者或者兩者,那你就要被迫使用后兩個引擎中的一個了。
相關(guān)文章
修改Innodb的數(shù)據(jù)頁大小以優(yōu)化MySQL的方法
這篇文章主要介紹了修改Innodb的數(shù)據(jù)頁大小以優(yōu)化MySQL的方法,Innodb是MySQL下一個頗具人氣的數(shù)據(jù)引擎,需要的朋友可以參考下2015-05-05Mysql+Navicat16長期免費直連數(shù)據(jù)庫安裝使用超詳細(xì)教程
這篇文章主要介紹了Mysql+Navicat16長期免費直連數(shù)據(jù)庫安裝教程,這里下載的是mysql8版本,第一個安裝包比較小, 第二個安裝包比較大, 因為包含調(diào)試工具,我這里下載的是第一個,詳細(xì)介紹跟隨小編一起看看吧2023-11-11mysql數(shù)據(jù)庫備份命令分享(mysql壓縮數(shù)據(jù)庫備份)
這篇文章主要介紹了mysql數(shù)據(jù)庫備份常用語句,包括數(shù)據(jù)庫壓縮備份、備份多個MySQL數(shù)據(jù)庫、備份多個MySQL數(shù)據(jù)庫、將數(shù)據(jù)庫轉(zhuǎn)移到新服務(wù)器等語句2014-01-01Centos7下使用yum安裝mysql數(shù)據(jù)庫的詳細(xì)教程(增強版)
這篇文章主要介紹了Centos7下使用yum安裝mysql數(shù)據(jù)庫的詳細(xì)教程(增強版),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12MySQL數(shù)據(jù)庫主從復(fù)制原理及作用分析
這篇文章主要介紹了MySQL數(shù)據(jù)庫主從復(fù)制原理并分析了主從復(fù)制的作用和使用方法,有需要的的朋友可以借鑒參考下,希望可以有所幫助,感謝閱讀2021-09-09