欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL存儲引擎InnoDB與Myisam的區(qū)別分析

 更新時間:2022年12月29日 09:01:59   投稿:yin  
INNODB會支持一些關(guān)系數(shù)據(jù)庫的高級功能,如事務(wù)功能和行級鎖,MYISAM不支持。MYISAM的性能更優(yōu),占用的存儲空間少。所以,選擇何種存儲引擎,視具體應(yīng)用而定。

MySQL有多種存儲引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。比較常用的是 MyISAM 和 InnoBD。在MySQL 5.1之前的版本中,默認(rèn)的搜索引擎是MyISAM,從MySQL 5.5之后的版本中,默認(rèn)的搜索引擎變更為InnoDB。

兩者的優(yōu)劣可謂是各有千秋。INNODB會支持一些關(guān)系數(shù)據(jù)庫的高級功能,如事務(wù)功能和行級鎖,MYISAM不支持。MYISAM的性能更優(yōu),占用的存儲空間少。所以,選擇何種存儲引擎,視具體應(yīng)用而定。

MyISAM介紹

每個MyISAM在磁盤上存儲成三個文件。第一個文件的名字以表的名字開始,擴展名指出文件類型。.frm文件存儲表定義。數(shù)據(jù)文件的擴展名為.MYD (MYData)。

MyISAM表格可以被壓縮,而且它們支持全文搜索。不支持事務(wù),而且也不支持外鍵。如果事物回滾將造成不完全回滾,不具有原子性。在進(jìn)行updata時進(jìn)行表鎖,并發(fā)量相對較小。如果執(zhí)行大量的SELECT,MyISAM是更好的選擇。

MyISAM緩存在內(nèi)存的是索引,不是數(shù)據(jù)。而InnoDB緩存在內(nèi)存的是數(shù)據(jù),相對來說,服務(wù)器內(nèi)存越大,InnoDB發(fā)揮的優(yōu)勢越大。

優(yōu)點:查詢數(shù)據(jù)相對較快,適合大量的select,可以全文索引。

缺點:不支持事務(wù),不支持外鍵,并發(fā)量較小,不適合大量update

InnoDB介紹

這種類型是事務(wù)安全的。.它與BDB類型具有相同的特性,它們還支持外鍵。InnoDB表格速度很快。具有比BDB還豐富的特性,因此如果需要一個事務(wù)安全的存儲引擎,建議使用它。在update時表進(jìn)行行鎖,并發(fā)量相對較大。如果你的數(shù)據(jù)執(zhí)行大量的INSERT或UPDATE,出于性能方面的考慮,應(yīng)該使用InnoDB表。

優(yōu)點:支持事務(wù),支持外鍵,并發(fā)量較大,適合大量update

缺點:查詢數(shù)據(jù)相對較快,不適合大量的select

MySQL 存儲引擎 MyISAM 與 InnoDB 如何選擇?

下面我們分別來看兩種存儲引擎的區(qū)別。

  • 一、InnoDB支持事務(wù),MyISAM不支持,這一點是非常之重要。事務(wù)是一種高級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而MyISAM就不可以了。
  • 二、MyISAM適合查詢以及插入為主的應(yīng)用,InnoDB適合頻繁修改以及涉及到安全性較高的應(yīng)用
  • 三、InnoDB支持外鍵,MyISAM不支持
  • 四、MySQL 在 5.1 之前版本默認(rèn)存儲引擎是 MyISAM,5.1 之后版本默認(rèn)存儲引擎是 InnoDB
  • 五、InnoDB不支持FULLTEXT類型的索引
  • 六、InnoDB中不保存表的行數(shù),如select count(*) from table時,InnoDB需要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語句包含where條件時MyISAM也需要掃描整個表
  • 七、對于自增長的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中可以和其他字段一起建立聯(lián)合索引
  • 八、清空整個表時,InnoDB是一行一行的刪除,效率非常慢。MyISAM則會重建表
  • 九、InnoDB支持行鎖(某些情況下還是鎖整表,如 update table set a=1 where user like '%lee%'

通過以上九點區(qū)別,結(jié)合個人博客的特點,推薦個人博客系統(tǒng)使用MyISAM,因為在博客里主要操作是讀取和寫入,很少有鏈?zhǔn)讲僮?。所以選擇MyISAM引擎使你博客打開也頁面的效率要高于InnoDB引擎的博客,當(dāng)然只是個人的建議,大多數(shù)博客還是根據(jù)實際情況下謹(jǐn)慎選擇。

總結(jié)

如果你的應(yīng)用程序一定要使用事務(wù),毫無疑問你要選擇INNODB引擎。但要注意,INNODB的行級鎖是有條件的。在where條件沒有使用主鍵時,照樣會鎖全表。比如DELETE FROM mytable這樣的刪除語句。

如果你的應(yīng)用程序?qū)Σ樵冃阅芤筝^高,就要使用MYISAM了。MYISAM索引和數(shù)據(jù)是分開的,而且其索引是壓縮的,可以更好地利用內(nèi)存。所以它的查詢性能明顯優(yōu)于INNODB。壓縮后的索引也能節(jié)約一些磁盤空間。MYISAM擁有全文索引的功能,這可以極大地優(yōu)化LIKE查詢的效率。

有人說MYISAM只能用于小型應(yīng)用,其實這只是一種偏見。如果數(shù)據(jù)量比較大,這是需要通過升級架構(gòu)來解決,比如分表分庫,而不是單純地依賴存儲引擎。

現(xiàn)在一般都是選用innodb了,主要是myisam的全表鎖,讀寫串行問題,并發(fā)效率鎖表,效率低myisam對于讀寫密集型應(yīng)用一般是不會去選用的。只用恰當(dāng)?shù)尼槍I(yè)務(wù)類型來選擇合適的表類型,才能最大的發(fā)揮MySQL的性能優(yōu)勢。

到此這篇關(guān)于MySQL存儲引擎InnoDB與Myisam的優(yōu)缺點的文章就介紹到這了,更多相關(guān)InnoDB與Myisam的優(yōu)缺點內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論