2016-11-19 61 views
3

我正在開發一個瀏覽器應用程序,通過php站點連接到多個MySQL數據庫。這些數據庫設置在單個AWS RDS實例上。當我建立這些數據庫時,我不太瞭解不同的數據庫引擎。在閱讀了關於不同類型的信息之後,我決定使用InnoDB實現低IOPS需求,MyISAM實現高IOPS需求,因爲我認爲它在某些任務中速度更快。我應該將我的數據庫從MyISAM更改爲InnoDB嗎? (AWS通知)

Amazon Web Services的告訴我說:

數據庫實例的測試1包含尚未遷移到InnoDB的MyISAM表。這些表格可能會影響您執行時間點恢復的能力。考慮將這些錶轉換爲InnoDB。請參考http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html#Overview.BackupDeviceRestrictions

我應該使用InnoDB重新創建MyISAM數據庫嗎?

+0

事實上,MyISAM的速度更快是唯一真正相關的,如果你的大數據吞吐量的需求 - 對於大多數CRUD應用做典型的web應用程序的工作負載你更好的斷帶的InnoDB其強大resiliancy和更豐富的功能集。 – Dai

回答

5

關於MyISAM比InnoDB更快的說法是從2000年代中期的代碼中延緩。

MyISAM是不是對於大多數類型的查詢來說,它已經不再是InnoDB了。從2007年開始看這個博客的基準:https://www.percona.com/blog/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

InnoDB從那時起就變得更好,更快,更可靠。 MyISAM沒有開發。

更新:在MySQL 8.0中,即使系統表已被轉換爲InnoDB。顯然有意淘汰MyISAM。我預計它會被棄用,然後在未來版本的MySQL中被刪除(但是我不能說從現在開始有多少年)。

有幾個邊緣情況下MyISAM可能會更快,如表掃描。但你真的不應該優化你的數據庫表掃描。您應該創建正確的索引避免表掃描。

更新2018年2月:的MyISAM剛剛遭受額外的40%的性能損失從近期修復的熔燬CPU的錯誤,這會影響表掃描。假設您負責並修補系統以修復崩潰漏洞,MyISAM現在是一項性能責任。見MyISAM的性能電流試驗的補丁:https://mariadb.org/myisam-table-scan-performance-kpti/

但是,勝過那就是InnoDB支持ACID行爲,和MyISAM不支持任何酸的四個素質的的事實。看到我的回答MyISAM versus InnoDB

未能支持ACID不僅僅是一個學術問題。它可以轉換成更新期間的表鎖,以及備份期間的全局鎖。