面試題 InnoDB與MyISAM的區別

2022-04-02 00:51:59 字數 2371 閱讀 1232

innodb支援事務,myisam不支援,對於innodb每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成乙個事務;

innodb支援外來鍵,而myisam不支援。對乙個包含外來鍵的innodb表轉為myisam會失敗;

innodb是聚集索引,資料檔案是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高。但是輔助索引需要兩次查詢,先查找到主鍵,然後再通過主鍵查詢到資料。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。而myisam是非聚集索引,資料檔案是分離的,索引儲存的是資料檔案的指標。主鍵索引和輔助索引是獨立的。

innodb不儲存表的具體行數,執行select count(*) from table時需要全表掃瞄。而myisam用乙個變數儲存了整個表的行數,執行上述語句時只需要讀出該變數即可,速度很快;

innodb不支援全文索引,而myisam支援全文索引,查詢效率上myisam要高

myisam

innodb

構成上的區別:

每個myisam在磁碟上儲存成三個檔案。第乙個檔案的名字以表的名字開始,副檔名指出檔案型別。 .frm檔案儲存表定義。 資料檔案的擴充套件名為.myd (mydata)。 索引檔案的副檔名是.myi (myindex)。

基於磁碟的資源是innodb表空間資料檔案和它的日誌檔案,innodb 表的大小只受限於作業系統檔案的大小,一般為 2gb

事務處理上方面:

myisam型別的表強調的是效能,其執行數度比innodb型別更快,但是不提供事務支援

innodb提供事務支援事務,外部鍵(foreign key)等高階資料庫功能

select update,insert,delete操作

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

1.如果你的資料執行大量的insert或update,出於效能方面的考慮,應該使用innodb表2.delete from table時,innodb不會重新建立表,而是一行一行的刪除。3.load table from master操作對innodb是不起作用的,解決方法是首先把innodb表改成myisam表,匯入資料後再改成innodb表,但是對於使用的額外的innodb特性(例如外來鍵)的表不適用

對****auto_increment的操作

每表乙個auto_incremen列的內部處理。myisaminsertupdate操作自動更新這一列**。這使得auto_increment列更快(至少10%)。在序列頂的值被刪除之後就不能再利用。(當auto_increment列被定義為多列索引的最後一列,可以出現重使用從序列頂部刪除的值的情況)。 auto_increment值可用alter table或myisamch來重置 對於auto_increment型別的字段,innodb中必須包含只有該字段的索引,但是在myisam表中,可以和其他字段一起建立聯合索引 更好和更快的auto_increment處理

如果你為乙個表指定auto_increment列,在資料詞典裡的innodb表控制代碼包含乙個名為自動增長計數器的計數器,它被用在為該列賦新值。 自動增長計數器僅被儲存在主記憶體中,而不是存在磁碟上 關於該計算器的演算法實現,請參考auto_increment列在innodb裡如何工作

表的具體行數

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

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

表鎖提供行鎖(locking on row level),提供與 oracle 型別一致的不加鎖讀取(non-locking read in selects),另外,innodb表的行鎖也不是絕對的,如果在執行乙個sql語句時mysql不能確定要掃瞄的範圍,innodb表同樣會鎖全表, 例如update table set num=1 where name like "%aaa%"

​ 在選擇儲存引擎時,應該根據應用系統的特點擊擇合適的儲存引擎。對於複雜的應用系統,還可以根據實際情況選擇多種儲存引擎進行組合。以下是幾種常用的儲存引擎的使用環境。

MySQL的InnoDB引擎與MyISAM引擎

myisam 這個是預設型別,它是基於傳統的isam型別,isam是indexed sequential access method 有索引的順序訪問方法 的縮寫,它是儲存記錄和檔案的標準方法。與其他儲存引擎比較,myisam具有檢查和修復 的大多數工具。myisam 可以被壓縮,而且它們支援全文搜...

面試題 InnoDB 行鎖

innodb 行鎖 行鎖介紹 行鎖特點 偏向innodb 儲存引擎,開銷大,加鎖慢 會出現死鎖 鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。innodb 與 myisam 的最大不同有兩點 一是支援事務 二是 採用了行級鎖。innodb 的行鎖模式 innodb 實現了以下兩種型別的行鎖。對於...

MySQL資料庫InnoDB與MyISAM區別

特點 行級鎖,支援事務處理,支援外來鍵,行鎖實現,根據索引條件檢索資料使用行鎖。表鎖,支援全文索引。表鎖,分為表共享鎖和表獨佔鎖。讀和讀之間使用共享鎖,讀寫之間使用獨佔鎖。b樹,又稱多路平衡查詢樹。所有節點中孩子節點的最大值為此樹的階 用m表示 每個節點關鍵字的個數最少有 m 2 1 個,最多有 m...