[英]MySQL / Rails Performance: One table, many rows vs. many tables, less rows?
[英]MySQL Performance of one vs. many tables
我知道MySQL通常会处理很多行的表。 但是,我目前面临一个设置,其中一个表将由多个用户(大约10个)同时读取和写入,并且该表很可能包含100亿行。
我的设置是带有InnoDB存储引擎的MySQL数据库。
我有一些项目的核心,那些大小的表会变得效率低,速度慢,也与索引有关。
我不喜欢让多个表具有完全相同的结构只是为了分割行。 主要问题 :但是,这不能解决由于如此大量的行而导致性能下降的问题吗?
附加问题 :如果使用如此大的表,我还能做些什么? 行数本身不可减少。
我听说过一些项目,那些大小的表会变得效率低,速度慢,也与索引有关。
这不典型。 只要您的表格按照您使用它们的方式进行了适当的索引,即使对于非常大的表格,性能也应该保持合理。
(随着BTREE索引的深度增加,索引性能略有下降,但这种影响实际上可以忽略不计。此外,可以通过在索引中使用较小的键来减轻它,因为这可以最小化树的深度。)
在某些情况下,更合适的解决方案可能是对表进行分区 。 这在内部将您的数据划分为多个表,但将它们公开为可以正常查询的单个表。 但是,分区会对表的索引方式提出一些特定要求,并且本身并不会提高查询性能。 通过从按日期分区的表中删除旧分区,允许一次从表中删除大量旧数据非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.