InnoDB和MyIsAM的區別

2021-07-16 22:07:21 字數 882 閱讀 2304

myisam型別不支援事務處理等高階處理,而innodb型別支援 這是網上對myisam和innodb的解釋,很抽象吧,我們用白話的方式解釋一下 其實也比較簡單 所謂事務處理,就是原子性操作。

打個比方,支援事務處理的innodb表,建設乙個中,發帖是給積分的。你發了乙個帖子執行乙個insert語句,來插入帖子內容,插入後就要執行乙個update語句來增加你的積分。假設一種特殊情況突然發生,insert成功了,update操作卻沒有被執行。也就是說你發了帖子卻沒有增加相應的積分。這就會造成使用者不滿。如果使用了事務處理,insert和update都放入到事務中去執行,這個時候,只有當insert和update兩條語句都執行生成的時候才會將資料更新、寫入到中,如果其中任何一條語句失敗,那麼就會回滾為初始狀態,不執行寫入。這樣就保證了insert和update肯定是一同執行的。

mysiam表不支援事務處理,同時mysiam表不支援外來鍵。外來鍵不用說了吧?不知道的話,去網上查吧。

同時,在執行資料庫寫入的操作(insert,update,delete)的時候,mysiam表會鎖表,而innodb表會鎖行。通俗點說,就是你執行了乙個update語句,那麼mysiam表會將整個表都鎖住,其他的insert和delete、update都會被拒之門外,等到這個update語句執行完成後才會被依次執行。

而鎖行,就是說,你執行update語句是,只會將這一條記錄進行鎖定,只有針對這條記錄的其他寫入、更新操作會被阻塞並等待這條update語句執行完畢後再執行,針對其他記錄的寫入操作不會有影響。

因此,當你的資料庫有大量的寫入、更新操作而查詢比較少或者資料完整性要求比較高的時候就選擇innodb表。當你的資料庫主要以查詢為主,相比較而言更新和寫入比較少,並且業務方面資料完整性要求不那麼嚴格,就選擇mysiam表。因為mysiam表的查詢操作效率和速度都比innodb要快

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型別欄位的索引 很難...