如果我们有超过100万条记录,如何提高mysql查询的性能?

时间:2010-11-16 10:35:46

标签: mysql symfony1 symfony-1.4

在用户表中,我有超过100万条记录,所以我如何使用MySQL,Symfony 1.4进行管理。提高绩效。

这样它可以提供快速输出。

2 个答案:

答案 0 :(得分:2)

要显着提高精心设计的系统的性能,您所能做的就是增加资源。通常,最近,最便宜的方法是分发任务。

例如,RDBM系统中的一个缓慢的事情是从存储器读取和写入(通常RDBMs系统从I / O绑定开始,也就是说,它们通常等待数据被读取或写入存储)。

因此,为了抵消,通常RDBMS允许您将表拆分为多个HDD,从而有效地增加I / O性能(类似于RAID0的方法)。

添加更多硬盘可提高性能。这可以达到系统可以支持的最大I / O(或者只是因为系统无法通过电路推送更多数据,或者因为它在获取数据时需要稍微收紧数据,因此它会受到CPU限制;最好是你会利用两者)

之后,您必须开始将跨数据库节点分发数据的系统相乘。为了使其工作,RDBMS必须支持它,或者应该有应用层来协调分配任务和合并结果,但通常情况下仍然可以扩展。

我想说,使用512个系统,你可以有效地缓存所有万亿条记录(10 ^ 12),并获得相对不错的性能。但实际上你应该指定你正在寻找什么样的性能 - 在terra-records上进行全文搜索和运行大多数简单的提取和更新之间存在差异。此外,对于某些工作,500毫秒(或更多)被认为是良好的表现,然后对于其他工作,它将是可怕的。

答案 1 :(得分:0)

起初:在1万亿到100万之间存在差异。

你的性能问题:向我们展示运行缓慢但没有看到它的查询,很难说它有什么问题。你能尝试什么:

  • 使用EXPLAIN获取有关您的慢速查询的更多信息,看看他们是否正在使用您的索引,如果没有(如果没有,为什么不呢?)
  • 使用正确合理的indexes