我有一个应用程序将隔离(和分片)用户数据存储在具有相同表结构(3个InnoDB表)的单独MySQL模式(也称为数据库)中,每个帐户一个。我们使用Amazon RDS存储数据,目前每个RDS实例大约有30k模式。我的问题是如何针对大量模式优化MySQL设置(或RDS,参数组设置)。
我知道有一种反射来谴责拥有数千个相同模式的做法,而是建议使用类似索引“account_id”列的单一模式。通常给出的论点是,碎片行走或模式变化的惩罚大于益处。在我们的例子中,我们需要保持数据隔离,并且不同帐户之间从不存在任何交互。
在这种情况下,有哪些方法可以最大限度地提高性能?
答案 0 :(得分:0)
提前警告:我对亚马逊RDS一无所知,所以这个答案可能绝对是胡说八道。我正在从一般的MySQL角度回答。
嗯,你的设置并不完全是最佳的,但有一些方法可以调整它。您希望过于频繁地阻止打开/关闭表,因此您希望同时打开许多表。
要做到这一点:
您可以在MySQL manual中找到更多参考资料。
您实际需要此限制的高度取决于资源的限制。每个打开的表都记忆 - 我不知道多少。像tuning primer或mysqltuner.pl这样的脚本可以帮助您防止过度使用内存。