托pipeMySQL数据库的服务器configuration

我有一个Web应用程序,它使用托pipe在虚拟服务器上的MySQL数据库。 当我启动应用程序和数据库非常小时,我一直在使用这个服务器。 现在它已经增长,服务器无法处理数据库,导致频繁的数据库错误。 我打算得到一个服务器,我需要的build议。
就像我说的那样,db现在是9GB,并且正在快速增长。 有数百万行的表,这些表经常更新和查询。 数据库显示最常见的错误是Lock wait timeout exceeded 。 以前曾经有过“锁的总数超过锁表大小”的错误,但我可以通过增加Innodb缓冲池大小来避免它。
请build议在我应该购买的服务器中查找哪些configuration。 我读的地方,数据库理想应该有一个缓冲池大小大于其数据的大小,所以在我的情况下,我想我需要内存GT 9 GB。 我应该在服务器上寻找哪些其他的东西?

告诉我,如果我应该给你更多的信息

你可以使用命名为MySQLTuner的perl脚本来获得一些variables的想法,如果需要的话可以升级硬件。
但是,在修改这些设置之前,您应该了解这些设置,否则您将面临加重问题的风险。

脚本本身包含一个非常有见识的提示:

*警告
完全理解你对MySQL数据库服务器所做的每一个改变对你来说是非常重要的。 如果您不了解脚本输出的部分内容,或者您​​不明白这些build议,则应该咨询知识渊博的DBA甚至是您信任的系统pipe理员。 总是在临时环境中testing您的更改,并且时刻牢记,某个区域的改进可能会对其他领域的MySQL产生负面影响。
*警告

您可以在Percona的MySQL性能博客上find关于这个主题的优秀文章,关于这个主题的书籍列表,甚至是percona.tv网站上的截屏。

你检查了锁等待?

您可以通过激活InnoDBlocking监视器来实现:

CREATE TABLE innodb_lock_monitor(int)ENGINE = INNODB;

然后尾巴你的MySQL错误日志。

要禁用监视器,请删除表格。

HTH