MySQL数据库在什么时候开始失去性能?
物理数据库大小重要吗? 记录的数量重要吗? 性能下降是线性的还是指数级的?
我有一个我相信是一个大的数据库,大约有1500万条记录,占用了近2GB。基于这些数字,我是否有任何动机清理数据,或者我是否可以允许它继续扩展几年?
MySQL数据库在什么时候开始失去性能?
物理数据库大小重要吗? 记录的数量重要吗? 性能下降是线性的还是指数级的?
我有一个我相信是一个大的数据库,大约有1500万条记录,占用了近2GB。基于这些数字,我是否有任何动机清理数据,或者我是否可以允许它继续扩展几年?
当前回答
不,这并不重要。MySQL的速度大约是每秒700万行。所以你可以把它放大一点
其他回答
谈论“数据库性能”有点毫无意义,“查询性能”在这里是一个更好的术语。答案是:这取决于查询,它所操作的数据,索引,硬件等。您可以了解将要扫描多少行,以及使用EXPLAIN语法将使用哪些索引。
2GB并不算真正的“大”数据库——它更像是一个中等大小的数据库。
我将首先关注您的索引,然后让服务器管理员查看您的操作系统,如果所有这些都没有帮助,可能是时候进行主/从配置了。
这是真的。另一个通常有效的方法是减少重复处理的数据量。如果你有“旧数据”和“新数据”,并且99%的查询都使用新数据,只需将所有旧数据移动到另一个表中-并且不要查看它;)
->看看分区。
查询性能主要取决于它需要扫描的记录数,索引在其中起着很高的作用,索引数据大小与行数和索引数成正比。
带有索引字段条件和完整值的查询通常会在1毫秒内返回,但是starts_with, in, Between,显然包含条件可能需要更多的时间和更多的记录来扫描。
此外,您还将面临DDL的许多维护问题,如ALTER, DROP将缓慢且难以处理更多的实时流量,即使是添加索引或新列。
一般来说,建议将数据库集群到所需的尽可能多的集群中(500GB将是一个通用的基准,正如其他人所说,它取决于许多因素,并且可以根据用例而变化),这样可以提供更好的隔离性,并提供扩展特定集群的独立性(更适合B2B情况)
这取决于您的查询和验证。
例如,我处理过一个包含10万种药物的表格,表格中每个药物都有一个超过15个字符的列通用名。我输入了一个查询来比较两个表格之间药物的通用名。查询需要更多的时间来运行。同样,如果使用药物索引,使用id列(如上所述)比较药物,只需要几秒钟。
不,这并不重要。MySQL的速度大约是每秒700万行。所以你可以把它放大一点