【发布时间】:2019-03-16 08:32:49
【问题描述】:
您有一个非常大的表——超过 5 亿条记录。该表已完全标准化。该表是一个 innodb 表。查询速度比可接受的要慢,即使它们已尽可能优化。尽管该表已经很慢,但预计在接下来的 6 个月内它的规模将翻一番。您会考虑采取哪些措施来解决当前的性能问题并让表中的数据可能翻两番?
我了解到,如果查询速度很慢,则问题出在处理能力、RAM、磁盘或服务器数量上。您能否用儿童语言讲述云计算或负载平衡或添加 RAM/CPU 功率/磁盘如何帮助将如此大量行的查询响应时间从 7 秒增加到 1 秒?假设您有 X 服务器和 Y RAM 以及 C 容量的 Z 光盘,这给了我 S1 秒的查询响应时间。如何改变 X、Y、Z、C 以将 S1 增加/减少 1 秒?
【问题讨论】:
-
答案真的取决于表结构和用例。
-
如果有任何日志表或任何其他表,您每天都期待大量数据,那么最好将这些数据迁移到 MongoDB 或任何其他 NoSQL db
-
@apokryfos 表结构和用例被冻结。 Channaveer Hakari db 固定为 mysql。系统已经上线,我们无法承受重大变化。
-
没有任何更具体的信息,我不知道我们是否可以说这不是纯粹的猜测。
-
将“尽可能优化”视为理所当然(99% 的 stackoverflow 案例并非如此),其中 99% 的案例将受益于更快的 i /o,其中 ram>ssd>hdd(仅受您想花多少钱的约束)。要在几秒钟内得到一个数字:启动profiling,运行您的查询并总结。这是您通过购买足够的内存来保存所有数据可以节省的时间的近似值。如果更少的 ram 就足够了,将再次取决于您的具体情况。
标签: mysql database-performance large-data