程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 白話講MyIsam和InnoDB的區別

白話講MyIsam和InnoDB的區別

編輯:MySQL綜合教程

"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語句是,mysql只會將這一條記錄進行鎖定,只有針對這條記錄的其他寫入、更新操作會被阻塞並等待這條update語句執行完畢後再執行,針對其他記錄的寫入操作不會有影響。
 
 
因此,當你的數據庫有大量的寫入、更新操作而查詢比較少或者數據完整性要求比較高的時候就選擇innodb表。當你的數據庫主要以查詢為主,相比較而言更新和寫入比較少,並且業務方面數據完整性要求不那麼嚴格,就選擇mysiam表。因為mysiam表的查詢操作效率和速度都比innodb要快

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved