2011-03-09 48 views
8

我看看這個:
http://www.mysqlperformanceblog.com/2009/01/12/should-you-move-from-myisam-to-innodb/
和:
http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/什麼時候MySQL INNODB微調成爲需求?

這些回答了很多關於我的INNODB的MyISAM VS問題。毫無疑問,INNODB是我應該去的方式。但是,我正在爲自己的工作和開發創建一個LAMP(ubuntu 10.10 x64)VM服務器。目前該服務器擁有2GB內存和一個SATA 20GB驅動器。我可以將這兩個數量都增加到大約3-3.5 GB的內存和一個200 GB的硬盤。

我毫不猶豫地切換到InnoDB中的原因是:
A)上述文章裏提到INNODB會大大增加表的大小,他建議更大量的內存和硬盤空間。在生產環境中,我不介意這種增長,在開發環境中,我擔心我無法適應。
B)我真的沒有看到任何細節在我的虛擬機上的INNODB引擎的任何一點。這可能是我在生產環境中甚至不允許執行的事情。這些文章聽起來像INNODB註定要失敗,沒有微調。

我的問題是這樣的。什麼時候INNODB可行?在我的服務器上運行INNODB需要多少RAM(只有我的數據用於測試,除了我之外,這個服務器不對任何人開放)?對我來說,假設一個不允許我微調數據庫的生產環境可能已經很好地調整了它自己是安全的嗎?

另外,我是否對事物持懷疑態度?

回答

12

恕我直言,它成爲一個需求,當你有成千上萬的行,或者當你可以預測數據的增長速度。

您需要關注調整innodb緩衝池和日誌文件大小。另外,請確保您已啓用innodb_file_per_table。

要獲得有多大,以使KB InnoDB緩衝池的想法,運行此查詢:

SELECT SUM(data_length+index_length)/power(1024,1) IBPSize_KB 
FROM information_schema.tables WHERE engine='InnoDB'; 

這是MB

SELECT SUM(data_length+index_length)/power(1024,2) IBPSize_MB 
FROM information_schema.tables WHERE engine='InnoDB'; 

這是在GB

SELECT SUM(data_length+index_length)/power(1024,3) IBPSize_GB 
FROM information_schema.tables WHERE engine='InnoDB'; 

我寫了關於這種調整的文章

如果你是通過你的服務器上的RAM量的限制,不超過的安裝着想超過25%操作系統。

+0

感謝您的全面回答。我會完成所有工作,並可能切換到INNODB。 – 2011-03-09 21:02:26

+0

哇計算是我的環境的瘋狂的內存量。計算出的內存量應該以MB爲單位分配緩衝池?你確定它不是KB? – 2012-03-09 19:18:35

+0

@TimMeers我正在更新以顯示如何獲得KB和GB – RolandoMySQLDBA 2012-03-09 19:25:26

0

我想你可能會在思考的東西。確實,INNODB喜歡內存,但是如果你的數據庫很小,我不認爲你會遇到很多問題。我對MYSQL或任何其他數據庫的唯一問題是,隨着數據的增長,快速訪問數據的要求也隨之增加。您也可以在表上使用壓縮來縮小它們,但INNODB在數據完整性方面遠遠優於MYISAM。

我也不會擔心調整你的應用程序,直到遇到瓶頸。除非您使用非常大的數據集,否則編寫高效的查詢和數據庫設計似乎比內存更重要。

+0

謝謝你的見解。我一定會考慮他們。 – 2011-03-09 21:29:21

相關問題