2012-02-27 20 views
-3

我要開發一個大的應用程序,一個學校管理系統;哪個MySQL存儲引擎會更好? MyIsam或InnoDB或其他?哪個MySQL的存儲引擎會比較好在我的情況下

+1

問題不夠明確。使用INNODB,因爲它支持外鍵 – 2012-02-27 08:43:10

+1

我有新聞給你。除非你的學校擁有十億學生,否則在數據庫世界裏它不會被認爲是大的:-) – paxdiablo 2012-02-27 08:45:16

+0

@paxdiablo,1或十億,它只是一個學校管理系統。這真的很大 – Starx 2012-02-27 08:57:09

回答

2

InnoDb支持關係和MyISAM沒有。如果您的應用程序需要此功能,則應使用InnoDB。 其他主要差異包括:

  • InnoDB較新,而MyISAM較舊。
  • InnoDB更復雜,而MyISAM更簡單。
  • InnoDB在數據完整性方面更加嚴格,而MyISAM鬆散。
  • InnoDB實現了行級鎖的插入和更新,而MyISAM實現了表級鎖。
  • InnoDB有事務,而MyISAM沒有事務。
  • InnoDB有外鍵和關係約束,而MyISAM沒有。
  • InnoDB具有更好的崩潰恢復功能,而MyISAM在恢復系統崩潰時的數據完整性方面效果不佳。
  • MyISAM有全文搜索索引,而InnoDB沒有。

楊揚source

this問題,並找出自己的,它適合的情況更好。

0

你沒有給你的任務多的信息。很可能你會有相關的表(innodb支持外鍵),除了innodb在myisam的併發環境中使用更有效的阻塞。所以使用InnoDb作爲默認引擎是合理的。

0

首先讓我告訴你,對於這種類型的管理系統而言,併發不是一個大問題,因爲你不會同時進行事務處理。因此,您提到的存儲機制InnoDB具有足夠的功能,例如ACID合規性,崩潰恢復,行級鎖定等等,但這並不意味着InnoDB更好。

主要問題是數據倉庫在這樣的系統數據增長很大。因此,爲了滿足這種需求,Mylsam看起來很合適,因爲它是默認的存儲引擎,並且廣泛用於數據倉庫環境。

合併或MRG_MylSam是另一種選擇。它使您能夠將一系列相同的MylSam表邏輯分組,並將它們作爲一個對象引用。 VLDB(超大型數據庫)環境也非常好。

其他一些存儲引擎是NDBCluster,聯邦,檔案等,我不認爲你需要... 好運..!

+0

今年是2012年。沒有人應該提及合併或聯合。我也強烈反對OP應該考慮數據倉庫,而MyISAM既不是默認的存儲引擎(它現在是InnoDB很長時間),也不是任何有問題的選擇(在崩潰後修復了一個非常大的MyISAM表? 祝你好運)。 – 2012-02-27 15:24:15

0

使用InnoDB,它的性能已經出現,它也支持外鍵。

同時針對最新的MySQL verison 5.5.x。當Oracle的Vanilla MySQL性能出現問題時,您可以查看替代服務器,如Percona(http://percona.com)。

來自MySQL 5.5的BTW InnoDB是MySQL服務器中的默認存儲引擎