首頁  >  文章  >  資料庫  >  MySQL儲存引擎MyISAM和InnoDB之間的比較

MySQL儲存引擎MyISAM和InnoDB之間的比較

小云云
小云云原創
2017-11-21 13:52:471645瀏覽

MySQL中的資料用各種不同的技術儲存在檔案(或記憶體)中。這些技術中的每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。透過選擇不同的技術,你能夠獲得額外的速度或功能,從而改善你的應用的整體功能。

MySQL有多種儲存引擎,MyISAM和InnoDB是其​​中常用的兩種。這裡介紹關於這兩種引擎的一些基本概念(非深入介紹)。

MyISAM是MySQL的預設儲存引擎,基於傳統的ISAM類型,支援全文搜索,但不是事務安全的,而且不支援外鍵。每張MyISAM表存放在三個文件中:frm 文件存放表格定義;資料檔是MYD (MYData);索引文件是MYI (MYIndex)。

InnoDB是事務型引擎,支援回滾、崩潰復原能力、多版本並發控制、ACID事務,支援行級鎖定(InnoDB表的行鎖不是絕對的,如果在執行一個SQL語句時MySQL無法確定要掃描的範圍,InnoDB表同樣會鎖定全表,如like操作時的SQL語句),以及提供與Oracle類型一致的不加鎖讀取方式。 InnoDB儲存它的表和索引在一個表空間中,表空間可以包含數個檔案。

主要區別:

MyISAM是非事務安全型的,而InnoDB是事務安全型的。

MyISAM鎖定的粒度是表級,而InnoDB支援行級鎖定。

MyISAM支援全文類型索引,而InnoDB不支援全文索引。

MyISAM相對簡單,所以在效率上要優於InnoDB,小型應用可以考慮使用MyISAM。

MyISAM表格是保存成檔案的形式,在跨平台的資料轉移中使用MyISAM儲存會省去不少的麻煩。

InnoDB表比MyISAM表更安全,可以在保證資料不會遺失的情況下,切換非交易表到交易表(alter table tablename type=innodb)。

應用場景:

MyISAM管理非交易表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用程式中需要執行大量的SELECT查詢,那麼MyISAM是更好的選擇。
InnoDB用於事務處理應用程序,具有眾多特性,包括ACID事務支援。如果應用程式中需要執行大量的INSERT或UPDATE操作,則應該使用InnoDB,這樣可以提高多使用者並發操作的效能。
常用指令:

(1)檢視表格的儲存類型(三種):

show create table tablename
show table status from  dbname  where name=tablename
mysqlshow  -u user -p password --status dbname tablename

(2)修改表的儲存引擎:

alter table tablename type=InnoDB

(3)啟動mysql在資料庫的命令列中新增以下參數使新發布的表都預設使用事務:

--default-table-type=InnoDB

(4)暫時變更預設表類型:

set table_type=InnoDB
show variables like 'table_type'

#以上就是mysql的兩個儲存引擎MyISAM和InnoDB的簡單介紹,以及兩個引擎之間的區別介紹。

相關推薦:

關於mysql的MERGE儲存引擎簡單範例

mysql事務與mysql儲存引擎_MySQL

MySQL兩種引擎的差別

以上是MySQL儲存引擎MyISAM和InnoDB之間的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn