2011-12-25 102 views
3

我似乎无法找到问题所在。MySQL使我的网站加载非常缓慢

我的主页需要5s才能加载,而且我怀疑MySQL的使用率很高。当我在浏览器中键入我的网站网址时,我必须等5秒才会加载。

我有专门的服务器运行intel赛扬,centos 1GB RAM。我的数据库大小约650MB与20万次的记录和日期,编号等

这里在网页中使用我的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. 优化表。

P.S:数据库大小是否影响性能?我在数据库中有超过50%的垃圾,删除无用的行有助于提高性能?


更新:我做了清理垃圾的数据库和性能显着提高,我注意到,服务器负载和mysql cpu使用率已经从36%至只有5%显著下跌。但仍然我不明白的是,为什么mysql在这么大的数据上变慢了,它应该能够处理那么多的数据。不是吗?

顺便说一句,我使用smarty引擎,尽管如此,网站正在放缓。

+0

200k记录的50%是垃圾太多!如果你不能降低加载时​​间,为什么不做这个Ajax,并显示一个加载器图标 – GoodSp33d 2011-12-25 08:28:33

+2

@pbu,所以如果你把这个查询出来,它加载速度更快? MySQL可以处理大型数据库,因此可能无法按照需要进行优化。你在桌上有没有索引? – Matt 2011-12-25 08:32:02

+1

SELECT和id'之间没有空格,还有一些其他语法错误。你确定这是你在主页上的查询吗?因为那会失败。 – 2011-12-25 08:37:40

回答

1

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

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

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

1

使用Memcache内存缓存将有助于提高您的服务器的性能

6

那么有很多原因,您的网站可能会很慢。

  • 坏查询
  • 数据库
  • 不当的指标
  • 图像的地块脚本 和
  • 大图片
  • 地块可能别人

MySQL可能是原因之一,因此,请务必清理你的数据库,创建适当的索引,使用Memcache等。同时使用分析你的选择查询

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

0

如果您将结果导入TABLE,Internet Explorer(至少对于某些版本)呈现缓慢。您是否尝试过其他浏览器?

2

几个想法:

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

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

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

其实,如果我正确地阅读它,你还没有确认时间花在数据库中。在您的代码中撒上基准来追踪时间到了哪里。在脚本的开始和结尾处或在可疑部分的开始和结尾使用$_start = microtime(1);echo "Done in " . number_format(microtime(1) - $_start, 2) . " seconds.<br>";

0

“我对MySQL的怀疑很高”

知道>怀疑。

因此,测量它!使用Firebug或Chrome开发者工具来测量页面速度。

  1. 在命令行上完成查询需要多长时间?太长 - >优化它
  2. 您正在加载的页面有多重? (使用Firebug/Chrome开发者工具) - >太重了?使用YSlow these guidelines
  3. 将您的页面内容作为静态文件放在您的服务器上,加载它,速度明显更快,然后是生成内容的代码。使用像memcache一样的服务器端缓存。
  4. 还不够快?尝试使用像Nginx之类的其他网络服务器。

关于数字4:这是相当高科技。首先得到“低垂的果实”。