PostgreSQL 与 MySQL 性能大测试(第三节) PostgreSQL 与 MySQL 性能大测试(第三节) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本测试文档,采用GPL 协议,如转载请注明出处 : http://blog.bowenye.com/read.php?4 如商业,请联系本人 QQ : 84437129又经过上一轮的比较(怎么我说"又"了呢), 在多种不定性操作中,PostgreSQL 成绩看上去是很了不起的,而MyISAM竟然去到了最后一名.今天我带来的测试,会分开更全方位的测试,简单说就是单种操作中,看看谁会更好,而这种单一的操作,一看上去,好像没啥多大的作用,你想一个网站,不可能只有SELECT,而没有UPDATE之类的吧,好,那我再说说,slave这之类的应用听说过吧,比如当你有两台数据库要做成读写分离的呢,这时候你就得知道,哪种操作应该放在哪台服务器,而且更高级一些,某些数据存在极其重要的可能性,如果这样,你还得用到混合数据库系统呢.OK,费话少说,先看看,上一次测试留下的数据条数,以更公平的测试 bowen=> SELECT count(id) from uchome_docomment; count -------- 200007(1 row)Time: 45.811 msmysql> 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 TABLE3.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,这节到这儿又完了,接下来,第四节的测试 MySQL那个版本好,并且最好用! mysql 错误 急求帮助! 求一个mysql查询语句 mysql数据查询如何跳过为空的字段 难道4.0.12-nt的版本不支持 load data 吗?在线等待 新手对于mysql的一些疑问 请高手进来看看!!! 问一个asp用odbc连接远程postgresql数据库的问题 mysql 数据库表里的时间字段 是int(16) 怎么转换成:datetime 类型? 我用这句不成功 mysql解析XML数据 大对象的存储问题 下面这种情况哪种速度更快啊? 索引问题
本测试文档,采用GPL 协议,如转载请注明出处 : http://blog.bowenye.com/read.php?4
如商业,请联系本人 QQ : 84437129
又经过上一轮的比较(怎么我说"又"了呢), 在多种不定性操作中,PostgreSQL 成绩看上去是很了不起的,而MyISAM竟然去到了最后一名.
今天我带来的测试,会分开更全方位的测试,简单说就是单种操作中,看看谁会更好,而这种单一的操作,一看上去,好像没啥多大的作用,
你想一个网站,不可能只有SELECT,而没有UPDATE之类的吧,好,那我再说说,slave这之类的应用听说过吧,比如当你有两台数据库要做成
读写分离的呢,这时候你就得知道,哪种操作应该放在哪台服务器,而且更高级一些,某些数据存在极其重要的可能性,如果这样,你还得用到混合
数据库系统呢.OK,费话少说,先看看,上一次测试留下的数据条数,以更公平的测试
bowen=> SELECT count(id) from uchome_docomment;
count
--------
200007
(1 row)Time: 45.811 msmysql> 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,这节到这儿又完了,接下来,第四节的测试