1

可以在 MySQL 数据库中保留 10000 多个表吗?我正在制作一个消息/聊天脚本,所以我正在考虑将数据分区到几个表上,因为几天后它将是大量数据。可以吗?或者有什么作用?好吧,因为一个表可以容纳数百万行,所以我想也许一个数据库也可以容纳大量的表

或者,问题可能是,Facebook 如何存储大量的日常聊天消息?

我是MySQL的新手,请帮助

4

2 回答 2

2

MySQL 对表的数量没有限制。底层文件系统可能对代表表的文件数量有限制。单独的存储引擎可能会施加特定于引擎的约束。InnoDB 允许多达 40 亿个表。

即便如此,典型的 DBMS 仍将“处理”如此大的数据库,但在此类系统中,系统目录的压力比平常更大。

除了在 phpMyAdmin 中显示表列表需要一段时间之外,我在一个数据库中有大约巨大的表而没有任何不良影响

于 2013-08-23T04:20:30.423 回答
1

这是可能的,但除非你有一个非常好的用例,否则我会避免它。它引发了各种可扩展性和可维护性问题。您的表大小主要受可用磁盘空间的限制。

如果你真的需要这样做...

您需要增加操作系统允许打开的文件描述符的最大数量,因为 MyISAM 表每个表使用两个文件描述符。(如果您使用的是 Linux,请阅读 bash 手册页中有关 ulimit 的部分以了解如何执行此操作)。

此外,还有一个名为 table_cache 的 MySQL 配置值,它限制了允许的表的数量。您需要确保它足够大以支持您需要的表数量。

您将不想再使用标准的“冲洗表”(除非您是那种喜欢看油漆变干的人),因此您需要单独冲洗每个表(例如在关机之前)。

同样,我会避免使用这么多表。如果您担心存储太多数据,您最好让您的架构支持您在少数表中所需的内容,并考虑归档、仓储(或删除!)旧数据。

于 2013-08-23T04:29:05.377 回答