MySQL INNODB微调在什么时候成为要求?

时间:2011-03-09 15:57:53

标签: mysql innodb virtual-machine lamp

我看了一眼:
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/

这些回答了很多关于INNODB和MyISAM的问题。毫无疑问,我认为INNODB是我应该去的方式。但是,我正在自己开发和开发我已经创建了一个LAMP(ubuntu 10.10 x64)VM服务器。目前服务器有2 GB内存和一个SATA 20GB驱动器。我可以毫不费力地增加这些数量,大约3-3.5 GB内存和200GB驱动器。

我不愿意切换到INNODB的原因是:
A)上述文章提到INNODB将大大增加表的大小,他建议使用更大量的RAM和驱动器空间。在生产环境中,我不介意这种增加,在开发环境中,我担心我无法容纳。
B)我真的没有看到微调我的VM上的INNODB引擎有什么意义。这可能是我在生产环境中甚至不允许做的事情。这篇文章听起来像是INNODB注定要在没有微调的情况下失败。

我的问题是这个。 INNODB在什么时候可行?在我的服务器上运行INNODB需要多少RAM(仅使用我的数据进行测试。除了我之外,这个服务器不对任何人开放)?并且我可以安全地假设一个不允许我微调数据库的生产环境可能已经自己调整过了吗?

另外,我是否过度思考/过度讨论事情?

2 个答案:

答案 0 :(得分:14)

恕我直言,当你有数万行,或者你可以预测数据的增长率时,它就成了一个要求。

您需要专注于调整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%。

答案 1 :(得分:0)

我认为你可能在思考问题。真的,INNODB喜欢ram,但如果你的数据库很小,我认为你不会有很多问题。我使用MYSQL或任何其他数据库的唯一问题是随着数据的增长,快速访问它的要求也是如此。您还可以对表使用压缩以使它们更小,但在数据完整性方面,INNODB比MYISAM好得多。

在遇到瓶颈之前,我也不会担心调整你的应用程序。除非您使用非常大的数据集,否则编写高效的查询和数据库设计似乎比内存更重要。