2011-01-05 179 views
0

即使使用专用服务器,但我的分类网站仍然存在问题,但仍然很慢,而且很多时候我的网站无法访问。mysql查询优化

我使用PHP和MySQL,有没有人愿意帮助我简化MySQL查询?

回答

1

我不认为有人会给你提供免费的支持来优化你的查询,这不是这个网站的用途。

但是,在互联网上有关于此的大量信息。您应该查看mysql slow query log以查明哪些是最慢的查询。然后,您可以使用EXPLAIN了解它们的性能以及它们是否使用正确的索引等。

我可以推荐Optimizing SELECT Statements文章来自MySQL和High performance MySQL

祝你好运。

+0

alexn我怎么能达到你?你能为我做这份工作吗? – malik 2011-01-05 17:02:32

0

您如何知道MySQL查询是您网站性能问题的主导因素?你如何衡量?

这可能是你需要不同的设计。

因为如果你在做每个页面刷新的查询,也许你可以使用内存缓存和检测,其中刷新触发相同的查询被重复的情况下的例子。然后,您可以返回缓存的结果(可能在异步检查是否有任何对后端数据库的干预更新需要缓存失效和/或刷新时)。

考虑数据发生频率的变化与读取的频率。在某些情况下,您可以通过额外的表格来补充您的设计,并在其中张贴更新时间戳或生成/序列号。从那里你的查询引擎可能能够替换一个复杂的查询,可能带有连接并且需要全表扫描,并且缓存一致性检查涉及一个表中一列的简单查询。如果先前的查询返回了10分钟前数据库中的所有汽车,并且没有行被更新,插入或从基础表或视图中删除,则可以跳过查询并引用缓存的结果。

也许你可以有你的中间层(一个或多个)进行更模糊查询,然后簸数据下降到演示文稿之前更精确的子集。

例如,给定区域内给定价格下汽车的网络前端查询可能会转化为更大区域内更广泛价格的标准化数据库查询,应用程序服务器会缓存结果,然后将其过滤到与该Web请求匹配的更具体的子集。另一个类似的查询可能会被翻译成相同的标准抽象查询...并且应用程序可以使用缓存结果来避免调用后端数据库。

换句话说,当你问如何优化查询,你也应该,如果他们有办法让你产生有效的,正确的,结果在执行较少的查询要求。最好减少对瓶颈的争夺,然后花费大量精力来调整通过瓶颈的流量。

事实上,你甚至应该质疑在MySQL数据库中,还是一些可能更好过一些的NoSQL(CouchDB的或者Hadoop的HBase的,等等)分发该数据的所有是否属于。 SQL数据库最适用于对工作施加参照完整性要求的事务操作。只要有可能,您应该寻找方法将这些操作与那些更频繁且涉及大量数据的操作分离。

+0

Jim,你可以优化mysql和代码,如果是,请让我知道我怎么能达到你? – malik 2011-01-05 17:03:41