LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2588|回复: 0

PostgreSQL 与 MySQL 性能大测试(第三节)

[复制链接]
发表于 2009-5-12 11:39:50 | 显示全部楼层 |阅读模式

  1. 本测试文档,采用GPL 协议,如转载请注明出处 : http://blog.bowenye.com/
  2. 如商业,请联系本人  QQ : 84437129
复制代码


又经过上一轮的比较(怎么我说"又"了呢), 在多种不定性操作中,PostgreSQL 成绩看上去是很了不起的,而MyISAM竟然去到了最后一名.
今天我带来的测试,会分开更全方位的测试,简单说就是单种操作中,看看谁会更好,而这种单一的操作,一看上去,好像没啥多大的作用,
你想一个网站,不可能只有SELECT,而没有UPDATE之类的吧,好,那我再说说,slave这之类的应用听说过吧,比如当你有两台数据库要做成
读写分离的呢,这时候你就得知道,哪种操作应该放在哪台服务器,而且更高级一些,某些数据存在极其重要的可能性,如果这样,你还得用到混合
数据库系统呢.OK,费话少说,先看看,上一次测试留下的数据条数,以更公平的测试


  1. bowen=> SELECT count(id) from uchome_docomment;
  2. count  
  3. --------
  4. 200007
  5. (1 row)

  6. Time: 45.811 ms

  7. mysql> SELECT count(id) from uchome_docomment_innodb;
  8. +-----------+
  9. | count(id) |
  10. +-----------+
  11. |    192447 |
  12. +-----------+
  13. 1 row in set (0.42 sec)


  14. mysql> SELECT count(id) from uchome_docomment;
  15. +-----------+
  16. | count(id) |
  17. +-----------+
  18. |    187426 |
  19. +-----------+
  20. 1 row in set (0.00 sec)

复制代码


都差不多,在20W条左右,PHP程序还是第二节的程序,只是注释成单一的操作
测试规则:

  1. 1.select * from TABLE  limit 0,10  (这儿随机)  select * from TABLE  limit 0 offset 10
  2. 2.select count(id) from TABLE
  3. 3.UPDATE TABLE SET doid = '4' WHERE id = (这儿随机)
  4. 4.INSERT INTO TABLE (upid ,doid ,uid ,username ,dateline ,message ,ip ,grade)VALUES (
  5. '1', '2', '1', 'myname', '1234567890', 'messagemessagemessagemessagem
  6. essagemessagemessagemessagemessage
  7. messagemessagemessagemessagemessage', '127.0.0.1', '2'
  8. );

  9. 5.DELETE FROM TABLE WHERE id =(这儿随机)


  10. 5种操作
  11. 顺序 MyISAM -> PostgreSQL -> InnoDB

  12. 各种操作次数用for方式操作5W次
复制代码

ok,let's go


  1. select的一个改动
  2. ...
  3. $start=rand(1,1000);
  4. $se_sql ="select * from TABLE  limit ".$start.",10";
  5. ...        
复制代码



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,这节到这儿又完了,接下来,第四节的测试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表