2011-01-07 217 views
0

我的网站出现问题,其中一个特定页面需要大约15秒的时间才能在我的实时网站上返回数据,而在我的暂存网站上则需要2秒钟。但他们都使用了相同的数据库备份。MySql优化查询

然后我意识到对于我的临时数据库,我已经删除了旧的临时数据库并将转换的备份还原为新的临时数据库。

但是,在实时数据库中,我直接在实时数据库上运行数据库转换。

然后,我对我的实时数据库也做了同样的事情,并删除了现有数据库,然后从转换后的备份中恢复它,呃,时间从那个特定网页的15秒减少到2秒。

我的问题是为什么?唯一想到的是,可能索引变得太大了,通过删除数据库,索引被重新创建了吗?\

我远吗?任何其他原因?此外,如果是这样的话,我怎么能在将来删除数据库?

感谢

回答

1

尝试查看解释计划,或者您的统计信息需要更新。很难确定这些高层次的事情,因为跨服务器可能会发生很多不同的事情。

+0

嗨PMV。你提到的这个解释计划在哪里?它在WorkBench或MYSQL查询浏览器中可用吗? – Cheeky 2011-01-11 10:25:06

0

它是一个高写入或高读取问题(或两者)的数据库?

你在数据库中做什么“转换”,你没有在临时数据库上做什么?

请问您是否可以更具体地了解发生了什么?

也许读这本书http://www.amazon.com/High-Performance-MySQL-Jeremy-Zawodny/dp/0596003064(它非常好)(我不是作者)。

+0

活动数据库和分段数据库之间的唯一区别如下: 对于分段,我拿了一个活动数据库的副本,在其上运行了一些转换脚本并将其恢复为“分段” 对于活动,我带着跑直播网站上的相同转换脚本。 所以实质上,活动数据库和分段数据库是相同的。唯一的区别是暂存数据库已从活动数据库的副本中删除并恢复,而活动并未被删除,只是在不脱机的情况下运行转换,然后进行恢复。 – Cheeky 2011-01-11 10:25:44

0

可能很容易的是,当您重建表格时,记录按照将有用记录彼此靠近的顺序放置,因此查询不需要尽可能多的磁盘读取。如果你想检查,MySQL统计可以显示你的读数。