有关网站的数据库方面的优化
有关网站的数据库方面的优化
今天要说的网站的优化是指数据库方面的, 网站运行的快慢, 数据库是一个比较重要的方面, 特别是对于大数据量的网站来说。
今年年初准备做一个有关博客收集的网站,于是在耐思尼克(www.nicenic.com)买了一个空间,因为是双线的空间,一开始的时候速度是相当的快,但在运行两个月之后,逐渐感到速度降下来了,难道空间不稳定了?于是我找耐思尼克的客服提出了我的问题,后来在耐思尼克的技术部的检查下,通知我说是因为我的数据库的数据量太大了,查询的sql语句也不够优化,原来查询只需要几毫秒的,因为数据变多而变成了几秒了,所以才会导致网站的速度下降。
耐思尼克给我的答复主要有以下几个方面:
1、文章的主体内容不应该放在数据库表中
2、应该在适当的表的字段给予建索引
3、优化查询的SQL语句
4、去掉不必要的SQL查询
于是我去网上狂搜索有关数据库优化的文章。因为我网站就是每天去抓取各大博客网站的一些文章,所以日积月累也有上10万篇的文章了。我把article表里装载的文章内容提取出来,放在空间文件夹中,作为一篇文章一个文件这样,在需要读取文章的时候才去读文件。当然这里就要牺牲了搜索全文的功能了。接着我在程序里把每一个sql的执行都记录下来,发现执行最多的是类似这样的一条语句select * from article where tag like '%体育%',这个消耗时间相当高,于是把tag提取出来做一个单独的tags表,于是查询变成 select a.* from article a,tags t wherea.IDAritle=t.fIDAritle and t.name='体育'。(关于tag就不详细说了,本来有关这个tag就已经可以说一篇文章了)接着我在article表的字段athor,fromurl等上建立索引。
原来查询要消耗几秒钟的SQL语句,一下子就减少到了0.001秒以下了。这里要谢谢耐思尼克客服对于我的问题的提出的解决方案,也让我认识到原来做海量数据的网站,数据库原来是这么重要的,希望各位网友也能从中了解到一点。