|
- 本测试文档,采用GPL 协议,如转载请注明出处 : http://blog.bowenye.com/
- 如商业,请联系本人 QQ : 84437129
复制代码
又经过上一轮的比较(怎么我说"又"了呢), 在多种不定性操作中,PostgreSQL 成绩看上去是很了不起的,而MyISAM竟然去到了最后一名.
今天我带来的测试,会分开更全方位的测试,简单说就是单种操作中,看看谁会更好,而这种单一的操作,一看上去,好像没啥多大的作用,
你想一个网站,不可能只有SELECT,而没有UPDATE之类的吧,好,那我再说说,slave这之类的应用听说过吧,比如当你有两台数据库要做成
读写分离的呢,这时候你就得知道,哪种操作应该放在哪台服务器,而且更高级一些,某些数据存在极其重要的可能性,如果这样,你还得用到混合
数据库系统呢.OK,费话少说,先看看,上一次测试留下的数据条数,以更公平的测试
- bowen=> SELECT count(id) from uchome_docomment;
- count
- --------
- 200007
- (1 row)
- Time: 45.811 ms
- mysql> SELECT count(id) from uchome_docomment_innodb;
- +-----------+
- | count(id) |
- +-----------+
- | 192447 |
- +-----------+
- 1 row in set (0.42 sec)
- mysql> SELECT count(id) from uchome_docomment;
- +-----------+
- | count(id) |
- +-----------+
- | 187426 |
- +-----------+
- 1 row in set (0.00 sec)
复制代码
都差不多,在20W条左右,PHP程序还是第二节的程序,只是注释成单一的操作
测试规则:
- 1.select * from TABLE limit 0,10 (这儿随机) select * from TABLE limit 0 offset 10
- 2.select count(id) from TABLE
- 3.UPDATE TABLE SET doid = '4' WHERE id = (这儿随机)
- 4.INSERT INTO TABLE (upid ,doid ,uid ,username ,dateline ,message ,ip ,grade)VALUES (
- '1', '2', '1', 'myname', '1234567890', 'messagemessagemessagemessagem
- essagemessagemessagemessagemessage
- messagemessagemessagemessagemessage', '127.0.0.1', '2'
- );
- 5.DELETE FROM TABLE WHERE id =(这儿随机)
- 5种操作
- 顺序 MyISAM -> PostgreSQL -> InnoDB
- 各种操作次数用for方式操作5W次
复制代码
ok,let's go
- select的一个改动
- ...
- $start=rand(1,1000);
- $se_sql ="select * from TABLE limit ".$start.",10";
- ...
复制代码
hoho ,这次成绩也让大家想不到的时候,上一节领先的PostgreSQL,在第规则(1),中,
如果limit rand(1,1000) offset 10的时候,时间超过PHP运行默认的30秒,最后只好改为rand(1,100)
count(id)的过程 PostgreSQL 在5W次FOR过程中也超过PHP默认运行的30秒时间
所以上两个不会出现在下面的成绩图表了
看看成绩图表
图一
图二
图三
图四
图五
这个成绩单,和上一节比起来,很怪疑,在混合操作中,PostgreSQL可以获得这么好成绩,
而现在单一操作上面却又如此失败,而MyISAM成绩这次真不错,都在4秒内,另一个也吃惊
的成绩,InnoDB在insert中,竟然去了26秒了,当时为了证实这个结果是没错的,我不得不重测试两次
结果都差不多.当然是有各自的原因的,在这儿呢,我先不说,卖个关子,当然也很欢迎高手指教
OK,这节到这儿又完了,接下来,第四节的测试 |
|