|
- 本测试文档,采用GPL 协议,如转载请注明出处 : http://blog.bowenye.com/read.php?4
- 如商业,请联系本人 QQ : 84437129
复制代码
各位同学,大家好,上一节介绍 MySQL与PostgreSQL 对比的前期内容和一堆费话资料,这节将正式开始进入第一个阶段测试比较
上一节所需的条件已完备,现在先公布PHP的测试代码
MySQL 测试代码
- <?PHP
- //MySQL 测试代码
- //OK,开始写测试代码,下面是PHP手册中标准的运用
- // MyISAM 的表为:uchome_docomment
- // InnoDB的表为: uchome_docomment_innodb ,
- //这儿只贴出MYISAM的PHP代码
- header("Content-type: text/html; charset=utf-8");
- //insert 用的 本来想随机来插入内容的,有点懒啦
- $in_sql = "INSERT INTO uchome_docomment (upid ,doid ,uid ,username ,dateline ,message ,ip ,grade)VALUES (
- '1', '2', '1', 'myname', '1234567890', 'messagemessagemessagemessagemessa
- gemessagemessagemessagemessagem
- essagemessagemessagemessagemessage', '127.0.0.1', '2'
- )";
- //insert 次数
- $i_i=0;
- //select 用, 全select 出来吧 :) ,取一条,留作 delete 或 update用
- $se_sql ="select * from uchome_docomment LIMIT 1";
- //select 次数
- $i_s=0;
- //delete 用 ,
- //随机 del id
- $idd=1;
- $del_sql ="DELETE FROM uchome_docomment WHERE id = ".$idd." ";
- //delete 次数
- $i_d=0;
- //update 用
- //update 随机 id
- $idu=1;
- $up_sql = "UPDATE uchome_docomment SET doid = '4' WHERE id =".$idu." ";
- //update 次数
- $i_u=0;
- //先连接数据
- $link = mysql_connect('localhost', 'bowen', 'bowen') or die('Could not connect: ' . mysql_error());
- echo 'Connected successfully';
- mysql_select_db('bowen',$link) or die('Could not select database'. mysql_error());
- //开始计时
- $start_time = microtime_float();
- // 在一万次FOR中,随机进行SQL操作
- for($i=0;$i<10;$i++) {
- $a=rand(1,4);
- switch ($a) {
- case $a==1:
- $i_s++;
- //select
- $result = mysql_query($se_sql) or die('Query failed: ' . mysql_error());
- while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
- rand(0,1)?$idd=$line['id']:$idu=$line['id'];
- }
- // 释放结果集
- mysql_free_result($result);
- break;
- case $a==2:
- $i_i++;
- //insert
- $result = mysql_query($in_sql) or die('Query insert failed: ' . pg_last_error());
- break;
- case $a==3:
- $i_d++;
- //delete
- $result = mysql_query($del_sql) or die('Query delete failed: ' . pg_last_error());
- break;
- case $a==4:
- $i_u++;
- //update
- $result = mysql_query($up_sql) or die('Query update failed: ' . pg_last_error());
- break;
- default:
- echo "here is default";
- break;
- }
- }
-
- //结束
- $end_time = microtime_float();
- // 关闭连接
- mysql_close($link);
- echo "<br />用了 : ".($end_time-$start_time)." 时间";
- echo "<br /> select 次数".$i_s;
- echo "<br /> insert 次数".$i_i;
- echo "<br /> delete 次数".$i_d;
- echo "<br /> update 次数".$i_u;
- // 释放结果集
- //标准的PHP手册 例子
- function microtime_float()
- {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
- ?>
复制代码
PostgreSQL 测试代码
- <?PHP
- //PostgreSQL 测试代码
- //OK,开始写测试代码,下面是PHP手册中标准的运用
- header("Content-type: text/html; charset=utf-8");
- //insert 用的 本来想随机来插入内容的,有点懒啦
- $in_sql = "INSERT INTO uchome_docomment (upid ,doid ,uid ,username ,dateline ,message ,ip ,grade)VALUES (
- '1', '2', '1', 'myname', '1234567890', 'messagemessagemessagemessage
- messagemessagemessagemessagem
- essagemessagemessagemessagemessagemessage', '127.0.0.1', '2'
- )";
- //insert 次数
- $i_i=0;
- //select 用, 全select 出来吧 :) ,取一条,留作 delete 或 update用
- $se_sql ="select * from uchome_docomment LIMIT 1";
- //select 次数
- $i_s=0;
- //delete 用 ,
- //随机 del id
- $idd=1;
- $del_sql ="DELETE FROM uchome_docomment WHERE id = ".$idd." ";
- //delete 次数
- $i_d=0;
- //update 用
- //update 随机 id
- $idu=1;
- $up_sql = "UPDATE uchome_docomment SET doid = '4' WHERE id =".$idu." ";
- //update 次数
- $i_u=0;
- //先连接数据
- $dbconn = pg_connect("host=localhost dbname=bowen user=bowen password=bowen") or die('Could not connect: ' . pg_last_error());
- //开始计时
- $start_time = microtime_float();
- // 在一万次FOR中,随机进行SQL操作
- for($i=0;$i<10;$i++) {
- $a=rand(1,4);
- switch ($a) {
- case $a==1:
- $i_s++;
- //select
- $result = pg_query($se_sql) or die('Query select failed: ' . pg_last_error());
- while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
- rand(0,1)?$idd=$line['id']:$idu=$line['id'];
- }
- pg_free_result($result);
- break;
- case $a==2:
- $i_i++;
- //insert
- $result = pg_query($in_sql) or die('Query insert failed: ' . pg_last_error());
- break;
- case $a==3:
- $i_d++;
- //delete
- $result = pg_query($del_sql) or die('Query delete failed: ' . pg_last_error());
- break;
- case $a==4:
- $i_u++;
- //update
- $result = pg_query($up_sql) or die('Query update failed: ' . pg_last_error());
- break;
- default:
- echo "here is default";
- break;
- }
- }
-
- //结束
- $end_time = microtime_float();
- // 关闭连接
- pg_close($dbconn);
- echo "<br />用了 : ".($end_time-$start_time)." 时间";
- echo "<br /> select 次数".$i_s;
- echo "<br /> insert 次数".$i_i;
- echo "<br /> delete 次数".$i_d;
- echo "<br /> update 次数".$i_u;
- // 释放结果集
- //标准的PHP手册 例子
- function microtime_float()
- {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
- ?>
复制代码
测试即将开始了,现在先说明规则
- 测试规则
- 一.五次,相隔20秒左右访问一次PHP文件
- 二.打开10个页面,同时连接PHP文件
- 三.顺序MYISAM -> InnoDB -> PostgreSQL
复制代码
let's go
经过一段时间之后,成绩出来了,先看图
Y座标是时间
X座标是测试次数
哈哈,不要惊讶,本人可以证明,配置都是默认,本人绝不对配置进行过改动
但为什么出现的性能与网上大多数的观点不一至呢?看到这儿,可能有一大堆MySQL 的fans们
已经拿好鸡蛋等着我了,哈哈,再看看一下面一份测试结果的txt文件
看看时间,竟然一节课又过了,老话:欲知后事如何,请看第三节 |
|