优化MySQL中的数千个模式

时间:2010-12-23 22:33:51

标签: mysql optimization amazon-web-services amazon-rds

我有一个应用程序将隔离(和分片)用户数据存储在具有相同表结构(3个InnoDB表)的单独MySQL模式(也称为数据库)中,每个帐户一个。我们使用Amazon RDS存储数据,目前每个RDS实例大约有30k模式。我的问题是如何针对大量模式优化MySQL设置(或RDS,参数组设置)。

我知道有一种反射来谴责拥有数千个相同模式的做法,而是建议使用类似索引“account_id”列的单一模式。通常给出的论点是,碎片行走或模式变化的惩罚大于益处。在我们的例子中,我们需要保持数据隔离,并且不同帐户之间从不存在任何交互。

在这种情况下,有哪些方法可以最大限度地提高性能?

1 个答案:

答案 0 :(得分:0)

提前警告:我对亚马逊RDS一无所知,所以这个答案可能绝对是胡说八道。我正在从一般的MySQL角度回答。

嗯,你的设置并不完全是最佳的,但有一些方法可以调整它。您希望过于频繁地阻止打开/关闭表,因此您希望同时打开许多表。

要做到这一点:

  • 确保您的操作系统允许MySQL拥有大量打开的文件
  • 正确设置table_cache

您可以在MySQL manual中找到更多参考资料。

您实际需要此限制的高度取决于资源的限制。每个打开的表都记忆 - 我不知道多少。像tuning primermysqltuner.pl这样的脚本可以帮助您防止过度使用内存。