Pooya Estakhri Asked: 2019-05-20 14:51:47 +0800 CST2019-05-20 14:51:47 +0800 CST 2019-05-20 14:51:47 +0800 CST 太多的表会减慢 Mysql 的速度吗? 772 我正在制作一个应该能够处理超过 1,000,000,000 行的数据库。 为了优化它的性能,我决定拆分表。 因此,我不会将 1,000,000,000 个条目放在一个表中超过 10 年,而是将其拆分为 3650 个表和每天一个表。 现在只有 2 个查询的连接或联合,我想知道是否有太多的表会降低性能,如果是,会降低多少? mysql innodb 1 个回答 Voted Best Answer danblack 2019-05-20T15:38:06+08:002019-05-20T15:38:06+08:00 总体而言,拆分表会增加开销,以获得不存在的感知收益。就索引和规范化而言,确实需要仔细设计数十亿行的表,但是拆分会增加计算/软件开销,并且可能会产生更糟糕的查询。 直接回答问题: 磁盘上太多的表对 MySQL 没有影响(除非你有一个文件系统不能从一个非常完整的目录快速打开文件名(在 8.0(表空间中的 frm 数据)和innodb_file_per_table =0 中得到缓解)。 至于活动表,那些在查询中经常使用的表有以下影响: table_open_cache限制缓存表的数量, innodb_open_files也是如此。 超过这些缓存限制将导致表关闭和打开,并且需要重新检查,从而增加查询的开销。
总体而言,拆分表会增加开销,以获得不存在的感知收益。就索引和规范化而言,确实需要仔细设计数十亿行的表,但是拆分会增加计算/软件开销,并且可能会产生更糟糕的查询。
直接回答问题:
磁盘上太多的表对 MySQL 没有影响(除非你有一个文件系统不能从一个非常完整的目录快速打开文件名(在 8.0(表空间中的 frm 数据)和innodb_file_per_table =0 中得到缓解)。
至于活动表,那些在查询中经常使用的表有以下影响:
table_open_cache限制缓存表的数量, innodb_open_files也是如此。
超过这些缓存限制将导致表关闭和打开,并且需要重新检查,从而增加查询的开销。