MySQL一对多表的性能

时间:2017-07-20 16:37:12

标签: mysql performance innodb large-scale

我知道MySQL通常会处理很多行的表。但是,我目前面临的设置是,一个表将由多个用户(大约10个)同时读取和写入,并且该表很可能包含100亿行。

我的设置是带有InnoDB存储引擎的MySQL数据库。

我有一些项目的核心,那些大小的表会变得效率低,速度慢,也与索引有关。

我不喜欢让多个表具有完全相同的结构只是为了分割行。 主要问题:但是,这会不能解决由于如此大量的行而导致性能下降的问题?

其他问题:我还能做些什么来处理这么大的桌子?行数本身不可减少。

1 个答案:

答案 0 :(得分:3)

  

我听说过一些项目,那些大小的表会变得效率低,速度慢,也与索引有关。

这不典型。只要您的表格按照您使用它们的方式进行了适当的索引,即使对于非常大的表格,性能也应该保持合理。

(随着BTREE索引的深度增加,索引性能会有非常轻微的下降,但这种影响实际上可以忽略不计。此外,它可以通过在索引中使用较小的键来减轻,因为这可以最小化树的深度。)

在某些情况下,更合适的解决方案可能是partitioning您的牌桌。这在内部将您的数据划分为多个表,但将它们公开为可以正常查询的单个表。但是,分区会对表的索引方式提出一些特定要求,并且本身并不会提高查询性能。通过从按日期分区的表中删除较旧的分区,可以一次性从表中删除大量旧数据。