0

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

我知道有一种反射来谴责拥有数千个相同模式的做法,而是建议存在一个具有索引“account_id”列之类的单一模式。通常给出的论点是分片遍历或模式更改的惩罚大于好处。在我们的案例中,我们需要保持数据隔离,并且不同账户之间永远不会有任何交互。

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

4

1 回答 1

0

提前警告:我对 Amazon RDS 毫无头绪,所以这个答案可能是一派胡言。我从通用 MySQL 的角度回答。

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

去做这个:

  • 确保你的操作系统允许 MySQL 有很多打开的文件
  • 正确设置table_cache

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

您实际希望此限制多高取决于您的资源限制。每张打开的桌子都需要记忆——我不确定有多少。像调优入门mysqltuner.pl这样的脚本可以帮助您防止过度使用内存。

于 2010-12-23T22:45:42.510 回答