myisam和innodb的區別

2022-02-26 21:43:22 字數 695 閱讀 3331

myisam是非事務安全型的,而innodb是事務安全型的(支援事務處理等高階處理);

myisam是表級鎖,而innodb是行級鎖;

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

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

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

mysiam表不支援外來鍵,而innodb支援

innodb在做select的時候,要維護的東西比myisam引擎多很多;

1)資料塊,innodb要快取,myisam只快取索引塊,  這中間還有換進換出的減少; 

2)innodb定址要對映到塊,再到行,myisam 記錄的直接是檔案的offset,定位比innodb要快

3)innodb還需要維護mvcc一致;雖然你的場景沒有,但他還是需要去檢查和維護

mvcc ( multi-version concurrency control )多版本併發控制 

myisam適合:(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務。

innodb適合:(1)可靠性要求比較高,或者要求事務;(2)表更新和查詢都相當的頻繁,並且行鎖定的機會比較大的情況。

MySQL中MyISAM與InnoDB區別

mysql中myisam與innodb區別 myisam innodb 事物處理 不支援支援 外來鍵不支援 支援行鎖 不支援支援 全文索引 支援不支援 表的具體行數 儲存表的具體行數 掃瞄表來計算行數 delete表時 先drop表,然後重建表 一行一行的刪除 索引和資料 分開的,並且索引是有壓縮的...

MySQL中MyISAM與InnoDB區別及選擇

innodb 支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄...

MySQL中MyISAM與InnoDB區別及選擇

支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄位的索引 很難...