Warning: curl_exec() has been disabled for security reasons in /pub/host/sunboyu/sunboyu/www/wp-includes/http.php on line 1022
传说中的千万数据量优化 » Blog Archive 一个程序猿 孙小一,孙小二,PHP,MYSQL,LINUX,APACHE,原创技术,扯淡

传说中的千万数据量优化

作者 : admin 于 2008-12-30 22:10:51 标签: ,
2008
12-30

平时看别人招聘,动不动来个“有千万数据量优化经验”。我还的确没有这个经验,中小网站来个几万几十万的数据就了不得,一些涉及数据多的顶多也来个百万,因为超百万我就分表了,而且设计的时候尽量使用主键索引,避免使用模糊搜索和一些复杂的搜索。
基本百万数量级以下的简单应用,一般的服务器没什么问题,只要程序够不垃圾就行。
今天突然奇想,尝试下千万数据什么样子,花半个小时生成了一堆随机的数字,一千万整,当然还有其他的一些数据,主要测试从千万级的数据中捞少量数据是什么样子。
我用的MSSQL2005,使用存储过程生成数据,半个小时,Mysql没实验过。结果,从千万数据用where捞几万条数据,用单一的where条件,果然很慢,能达到20几秒。后仔细查看索引和语句,发现没有很好的索引供sql语句使用,根据where语句建立索引,速度提升到10秒左右。因为只是取出几个字段,后又想使用覆盖索引,加上那几个字段,速度大为提高。
经过跟踪测试,在覆盖索引的使用后,取数据已经达到了相当迅速,但大量的时间消耗在了数据库连接和数据的传输上。因为本系统必须操作大量数据,而拆分数据后又增加了创建数据库连接的成本,速度反而变慢。其实,只要php不超时,已经达到了可用的程度。
总结:索引这玩意真的不错,但设计数据表要尽量简单,简单不是指字段简单,而是使sql语句取数据简单,必要时中间要增加矢量的冗余数据,用空间换取时间。

发表评论




XHTML:你可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(若看不到验证码,请重新加载页面。)