mysql儲存引擎之間的差異:1、MyISAM不支援事務,不支援行級鎖,而InnoDB則支援交易和行級鎖定;2、InnoDB支援MVCC,支援外鍵,而MyISAM不支援MVCC和外鍵。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
InnoDB支援事物,而MyISAM不支援事物
InnoDB支持行級鎖,而MyISAM支援表級鎖定
InnoDB支援MVCC, 而MyISAM不支援
mysql中myisam,innodb和memory三個儲存引擎
1、區別:
1) MyISAM管理非交易表。提供高速儲存和檢索,以及全文搜尋能力。 MyISAM在所有MySQL配置裡被支持,是預設的儲存引擎,除非配置MySQL預設使用另外一個引擎。 2)MEMORY儲存引擎提供「記憶體中」表。 MERGE儲存引擎允許集合將被處理相同的MyISAM表作為一個單獨的表。就像MyISAM一樣,MEMORY和MERGE儲存引擎處理非事務表,這兩個引擎也都被預設包含在MySQL中。 註解:MEMORY儲存引擎正式地被確定為HEAP引擎。 3)InnoDB和儲存引擎提供事務安全表,預設被包括在所 有MySQL 5.1二進位分發版裡,可以依照喜好透過設定MySQL來允許或禁止任一引擎。2、功能點簡介
1)MyISAM儲存引擎
MyISAM儲存引擎不支援事務,不支援行級鎖,只支援並發插入的表鎖,主要用於高負載的select。 myisam類型的表格支援三種不同的儲存結構:靜態型、動態型、壓縮型。 (1)靜態型:就是定義的表格列的大小是固定(即不含:xblob、xtext、varchar等長度可變的資料類型),這樣mysql就會自動使用靜態myisam格式。 使用靜態格式的表的效能比較高,因為在維護和存取的時候以預定格式儲存資料時需要的開銷很低。但這高效能是有空間換來的,因為在定義的時候是固定的,所以不管列中的值有多大,都會以最大值為準,佔據了整個空間。 (2)動態型:如果列(即使只有一列)定義為動態的(xblob, xtext, varchar等資料型別),這時myisam就自動使用動態型,雖然動態型的表格佔用了比靜態型表較少的空間,但帶來了效能的降低,因為如果某個欄位的內容改變則其位置很可能需要移動,這樣就會導致碎片的產生。隨著資料變化的怎多,碎片就會增加,資料存取效能就會相應的降低。 (3)壓縮型:如果在這個資料庫中建立的是在整個生命週期內只讀的表,則這種情況就是用myisam的壓縮型表來減少空間的佔用。2)MEMORY儲存引擎:
(1)memory儲存引擎相比前面的一些儲存引擎,有點不一樣,其使用儲存在內從中的數據來創建表,而且所有的資料也都儲存在記憶體中。 (2)每個基於memory儲存引擎的表實際對應一個磁碟文件,該文件的文件名和表名是相同的,類型為.frm。該文件只儲存表格的結構,而其資料文件,都是儲存在記憶體中,這樣有利於對資料的快速處理,提高整個表的處理能力。 (3)memory儲存引擎預設使用雜湊(HASH)索引,其速度比使用B- Tree型要快,如果讀者希望使用B樹型,則在建立的時候可以引用。 (4)memory儲存引擎檔案資料都儲存在記憶體中,如果mysqld進程發生異常,重新啟動或關機這些資料都會消失。所以memory儲存引擎中的表的生命週期很短,通常只使用一次。3)innoDB儲存引擎:
(1) innodb儲存引擎該mysql表提供了事務,回滾以及系統崩潰修復能力和多版本迸發控制的事務的安全。 (2)innodb支援自增長列(auto_increment),自增長列的值不能為空,如果在使用的時候為空的話怎會進行自動存現有的值開始增值,如果有但是比現在的還大,就儲存這個值。 (3)innodb儲存引擎支援外鍵(foreign key) ,外鍵所在的表稱為子表而所依賴的表稱為父表。 (4)innodb儲存引擎最重要的是支援事務,以及事務相關聯功能。 (5)innodb儲存引擎支援mvcc的行級鎖定。 推薦學習:以上是mysql儲存引擎之間的差異是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!