MySQL使我的网站加载速度非常慢

时间:2011-12-25 08:23:40

标签: php mysql

我似乎无法找到问题所在。

我的主页需要5秒才能加载,我怀疑它是因为MySQL。当我在浏览器中输入我的网站网址时,我必须等待5秒才会加载。

我有运行intel celeron的专用服务器,带有1GB RAM的centos。我的数据库大小约为650mb,有20万条记录,我为日期,id等创建了索引。

这是我在主页中使用的SQL查询:

select `id`,`title`,`desc`,`contribution`,`date`,`sponsored`                
from tbl_releases where date <= CURRENT_DATE()  AND approved='1' 
order by `date` desc,`sponsored` desc,`con` desc,`id` desc
limit 100

我尝试过所有的事情,比如

  1. 使用my.cnf优化缓冲区等,但不提高网站性能。
  2. 优化表。
  3. P.S:数据库大小对性能有影响吗?我在数据库中有超过50%的垃圾,删除无用行有助于提高性能?


    更新:我在数据库中做了清理垃圾,性能得到了显着改善,我注意到服务器负载和mysql cpu使用率从36%大幅下降到5%。但仍然是我不明白,为什么mysql正在减慢这么大的数据,它应该几乎处理那么多的数据。不是吗?

    不过,我正在使用智能引擎,尽管如此,网站正在放缓。

6 个答案:

答案 0 :(得分:6)

有很多原因导致您的网站速度变慢。

  • 错误查询
  • 数据库中的索引不正确
  • 很多图片
  • 大图片
  • 很多剧本 还有其他人

MySQL可能是一个原因,因此请务必清理数据库,创建正确的索引,使用Memcache等。还可以使用EXPLAIN

分析您的选择查询

Here是我撰写的关于优化网站的文章。

答案 1 :(得分:2)

一些想法:

我怀疑你需要每隔时间运行查询。将数据缓存到您在主页上包含的静态文件中。定期或在数据更改时重新生成文件。

WHERE子句中使用的列添加索引可以大大缩短SELECT时间(以减慢INSERT s为代价)。如果您已有索引,请使用EXPLAIN SELECT命令确保它正在使用它们。

200k行650 MB,如果你想知道你是否在该表中存储(?)缩略图。如果是这样,那可以解释它。数据库针对大量微小数据进行了优化。文件系统针对较少数量的较大数据块进行了优化。如果可以将任何大量数据迁移到文件,您将获得更好的性能。

实际上,如果我正确地阅读它,你根本没有确认在数据库中花费的时间。在代码中使用基准测试来跟踪时间的变化。在脚本的开头和结尾或在可疑部分的开头和结尾使用$_start = microtime(1);echo "Done in " . number_format(microtime(1) - $_start, 2) . " seconds.<br>";

答案 2 :(得分:1)

那么,从CLI运行查询需要多长时间?

如果它实际上是你的数据库,我会感到惊讶。 200K行不是那么大。

如果查询具有正确的索引,则查询时间将随着时间大小的日志而增加;否则就是线性的。

答案 3 :(得分:1)

使用Memcache Memcache将有助于提高服务器的性能

答案 4 :(得分:0)

如果您将结果导入TABLE,则Internet Explorer(至少对于某些版本而言)会使其变慢。你尝试过其他浏览器吗?

答案 5 :(得分:0)

“我因为MySQL而高度怀疑它”

了解&gt;怀疑。

所以衡量一下吧!使用Firebug或Chrome开发者工具来测量页面速度。

  1. 在命令行上完成查询需要多长时间?太长了 - &gt;优化它
  2. 您要加载的页面有多重? (使用Firebug / Chrome开发者工具) - &gt;太沉重?使用YSlow these guidelines
  3. 将您的页面内容作为静态文件放在您的服务器上,加载它,它是否明显更快,然后是生成内容的代码。使用服务器端缓存,如memcache。
  4. 还不够快?尝试使用不同的网络服务器,如Nginx或其他东西。
  5. 关于4号:那是相当高科技的。首先得到“低调的果实”。