程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫存儲引擎之MyISAM和InnoDB的區別對比

MySQL數據庫存儲引擎之MyISAM和InnoDB的區別對比

編輯:MySQL綜合教程

MySQL數據庫存儲引擎是本文我們主要要介紹的內容,它包括:MyISAMInnoDB,其中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.看表的存儲類型三種):

  1. show create table tablename  
  2. show table status from  dbname  where name=tablename 
  3. mysqlshow  -u user -p password --status dbname tablename  
  4.  

2.修改表的存儲引擎:

  1. alter table tablename type=InnoDB 

3.啟動mysql數據庫的命令行中添加以下參數使新發布的表都默認使用事務:

  1. default-table-type=InnoDB 

4.臨時改變默認表類型:

  1. set table_type=InnoDB 
  2. show variables like 'table_type' 

關於MySQL數據庫的存儲引擎MyISAM和InnoDB的知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved