繁体   English   中英

MySQL一对多表的性能

[英]MySQL Performance of one vs. many tables

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

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

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

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

附加问题 :如果使用如此大的表,我还能做些什么? 行数本身不可减少。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM