Innodb與MyIsam區別一

2021-08-16 03:35:22 字數 1979 閱讀 4477

mysql支援的儲存引擎:innodb myisam ndb memory archive。

儲存檔案

1, 事務處理

innodb 支援事務功能,myisam 不支援。

myisam 的執行速度更快,效能更好。

myisam管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用中需要執行大量的select查詢,那麼myisam是更好的選擇。

innodb用於事務處理應用程式,具有眾多特性,包括acid事務支援。如果應用中需要執行大量的insert或update操作,則應該使用innodb,這樣可以提高多使用者併發操作的效能。

2,select ,update ,insert ,delete 操作

myisam:如果執行大量的select,myisam是更好的選擇

innodb:如果你的資料執行大量的insert或update,出於效能方面的考慮,應該使用innodb表

delete from table時,innodb不會重新建立表,而是一行一行的刪除。

3,鎖機制不同

innodb 為行級鎖,myisam 為表級鎖。

注意:當資料庫無法確定,所找的行時,也會變為鎖定整個表。

如: update table set num = 10 where username like "%test%";

另外,innodb表的行鎖也不是絕對的,假如在執行乙個sql語句時mysql不能確定要掃瞄的範圍,innodb表同樣會鎖全表,例如update table set num=1 where name like 「%aaa%」

4,查詢表的行數不同

myisam:select count(*) from table,myisam只要簡單的讀出儲存好的行數,注意的是,當count(*)語句包含 where條件時,兩種表的操作是一樣的

innodb : innodb 中不儲存表的具體行數,也就是說,執行select count(*) from table時,innodb要掃瞄一遍整個表來計算有多少行

5,物理結構不同

myism物理檔案結構為:

.frm檔案:與表相關的元資料資訊都存放在frm檔案,包括表結構的定義資訊等。

.myd檔案:myisam儲存引擎專用,用於儲存myisam表的資料

.myi檔案:myisam儲存引擎專用,用於儲存myisam表的索引相關資訊

innodb的物理檔案結構為:

.frm與表相關的元資料資訊都存放在frm檔案,包括表結構的定義資訊等。

.ibd檔案和.ibdata檔案:

這兩種檔案都是存放innodb資料的檔案,之所以用兩種檔案來存放innodb的資料,是因為innodb的資料儲存方式能夠通過配置來決定是使用

共享表空間存放儲存資料,還是用

獨享表空間存放儲存資料。

獨享表空間儲存方式使用.ibd檔案,並且每個表乙個ibd檔案

共享表空間儲存方式使用.ibdata檔案,所有表共同使用乙個ibdata檔案

覺得使用哪種方式的引數在mysql的配置檔案中 innodb_file_per_table

6.檔案壓縮方面

myisam的索引和資料是分開的,並且索引是有壓縮的,記憶體使用率就對應提高了不少。能載入更多索引,而innodb是索引和資料是緊密**的,沒有使用壓縮從而會造成innodb比myisam體積龐大不小。

經常隔1,2個月就會發生應用開發人員不小心update乙個表where寫的範圍不對,導致這個表沒法正常用了,這個時候myisam的優越性就體現出來了,隨便從當天拷貝的壓縮包取出對應表的檔案,隨便放到乙個資料庫目錄下,然後dump成sql再導回到主庫,並把對應的binlog補上。如果是innodb,恐怕不可能有這麼快速度,別和我說讓innodb定期用匯出***.sql機制備份,因為最小的乙個資料庫例項的資料量基本都是幾十g大小。

MyISAM與InnoDB 的區別

innodb支援事務,myisam不支援,對於innodb每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成乙個事務 innodb支援外來鍵,而myisam不支援。對乙個包含外來鍵的innodb表轉為myisam會失敗 inno...

InnoDB與MyISAM的區別

1 儲存結構上不同 myisam非聚簇索引,資料在磁碟上分成3個資料檔案存放,frm字尾檔案是表結構檔案,myd字尾是表資料檔案,myi是表索引檔案。innodb聚簇索引,資料 表結構 資料 索引 都存放在乙個資料檔案 也可能多個,但是是不同的表空間 2 儲存空間不同 myisam可被壓縮,儲存空間...

MyISAM與InnoDB 的區別

1.事務 innodb支援,myisam不支援,在innodb中每一條sql語句都會預設封裝成事務自動提交,然而這樣會影響速度,因此最好把多條sql語句放在begin和commit之間組成乙個事務 2.索引 innodb是聚集索引,使用b tree作為索引結構,資料檔案是和 主鍵 索引綁在一起的 表...