我知道MySQL通常很好地处理多行表。但是,我目前面临这样一个设置:一个表将由多个用户同时读写(大约10个),而且该表很有可能包含100亿行。
我的设置是一个带有MySQL存储引擎的InnoDB数据库。
我对一些项目很感兴趣,在这些项目中,这种大小的表会变得效率低、速度慢,同时也涉及索引。
我不喜欢让具有完全相同结构的多个表来拆分行的想法。的主要问题:但是,这难道不能解决由于这么多行导致性能下降的问题吗?
附加问题:我还能做些什么来处理这么大的桌子呢?行数本身不会减少。
发布于 2017-07-20 18:24:24
我听说过一些项目,在这些项目中,这种大小的表会变得效率低、速度慢,同时也涉及索引。
这并不典型。只要对表的使用方式进行了适当的索引,即使对于非常大的表,性能也应该是合理的。
(随着BTREE索引深度的增加,索引性能略有下降,但这种影响实际上可以忽略不计。此外,可以通过在索引中使用较小的键来缓解这种情况,因为这样可以最小化树的深度。)
在某些情况下,更合适的解决方案可能是分区您的表。这在内部将数据划分为多个表,但将其公开为一个表,可以正常查询。但是,分区对表的索引方式提出了一些特定的要求,并不能从本质上提高查询性能。通过从按日期分区的表中删除旧分区,同时允许从表中删除大量旧数据,这主要是有用的。
https://stackoverflow.com/questions/45220520
复制相似问题