深刻商量:MySQL數據庫MyISAM與InnoDB存儲引擎的比擬。本站提示廣大學習愛好者:(深刻商量:MySQL數據庫MyISAM與InnoDB存儲引擎的比擬)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻商量:MySQL數據庫MyISAM與InnoDB存儲引擎的比擬正文
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'