mysql - 调整 mysql 以处理 10,000 多个表

标签 mysql


嘿,
我需要调整我们的一台 mysql(RH5.8 上的 5.1)服务器以处理超过 10K 表,我没有看到 mysql 处理 10-20K 表有任何问题,但我确信对其 cnf 文件进行了一些更改需要。

我添加到 my.cnf 文件中的唯一内容是 table_open_cache=20000

我正在使用 InnoDB 存储引擎,而不是使用查询缓存。
我还缺少什么吗?

谢谢

最佳答案

默认情况下,InnoDB 将所有表存储在一个文件中,因此如果您计划将表设置得很大,则可能会遇到操作系统对文件大小的限制,否则拥有那么多表实际上不会出现任何问题或性能问题。如果您要存储大量数据,请检查操作系统文件大小限制,并查看是否需要使用选项innodb_file_per_table,以便每个表都位于自己的文件中。

从现在拥有的到想要 10k+ 表,实际上不需要任何特定的配置更改来处理这么多表。

我建议阅读有关以下 InnoDB 主题的 MySQL 引用手册:Configuration , Disk I/O and File Space Management , Tuning ,和Limits查看您是否需要根据这些部分的信息更改您的配置或应用程序。也许最有值(value)的部分是调整部分。

如果您计划创建和删除大量增长到合理大小的表,您可能需要使用每个表文件选项,以便减少表空间的碎片。

正如其他人所说,可能有一种方法可以构建数据,这样您就不需要 10-15,000 个表,但可以使用适当的索引将大量表数据放入单个表中。如果不知道您正在存储什么以及为什么需要这么多表,就不可能说出来。希望有帮助。

关于mysql - 调整 mysql 以处理 10,000 多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377924/

相关文章:

mysql - 未知属性错误 Rails 5.1.1 - 无法识别具有连接表的模型属性

mysql - Docker、Springboot 和 Mysql : com. mysql.cj.exceptions.CJCommunicationsException:通信链路故障

php - 0 当没有行存在时

mysql - 显示数据库中所有创建的表?

mysql where 条件

php - 将数据添加到注册表中

php - MySQL update or insert or die 查询

php - 在 mysql 中搜索长字符串中的关键字?

使用 LIMIT 选项优化 MySQL RAND()

php - 无法从数据库中选择?