《Mysql必讀深入探討:MySQL數據庫MyISAM與InnoDB存儲引擎的比較》要點:
本文介紹了Mysql必讀深入探討:MySQL數據庫MyISAM與InnoDB存儲引擎的比較,希望對您有用。如果有疑問,可以聯系我們。
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'