webn |
2005-10-24 13:17 |
用PHP连mysql和oracle数据库性能比较
用PHP连mysql和oracle数据库性能比较 N&pCx& ]:f%l
mEy 测试硬件说明: &=Wlaa/,& 测试使用的是我的爱机,配置如下: m6djeOl CPU:C433 4aY|TN/| 内存:128M >*n0n!vF 硬盘:酷鱼2代20G ?
qA]w9x #,.Hr#3nI 测试软件说明: 9C\Fq- WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5 p^_yU_ linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,mysql 3.22.32 AK#1]i~ Z<4AL\l 98 测试代码说明: -]=@s 使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下: g[t [/TV mysql的表结构: {V-v-f CREATE TABLE board ( )Z
VD+X board_id smallint(6) NOT NULL auto_increment, A4ygW: board_name char(16) NOT NULL, rt|7h>RQ board_manager char(20), F/A|(AH' PRIMARY KEY (board_id) ow#1="G,= ); ,=:D oracle的结构: h*Pc=/p CREATE TABLE PHP_ORACLE."BOARD" -tNUMi' ("BOARD_ID" FLOAT, [h:T*(R? "BOARD_NAME" CHAR(16) NOT NULL, p^u:&Quac "BOARD_MANAGER" CHAR(20)) ; 6 _ow%Rx~F !L8#@BjU 我们只测试了INSERT操作花的时间,对于select,并未作测试。 |a%Tp3Q~ 因为win32下只有PHP3才能连接oracle数据库,所以只测试了用PHP3连接oracle的性能。相 2"S}bfrX 信在PHP4的正式版本出来后,用PHP4连接oracle的速度应该有所提升。 i@BtM9: 而在LINUX下,因为我没有装oracle,所以只测试了mysql的性能。据说在LINUX下,oracle TuYCR>P[ 的性能不错,只是无法测试。 e*n@j 并且我们将所有的用于数据库连接和oracle用来分析sql语句的代码都放在了统计代码之外 r)6M!_]AW ,所以测试得出的时间只是用于执行SQL操作所花费的时间。 h65-s LraWcO\or' 用来测试mysql的程序: nJLFfXWx fg{n(TE"8 <?php 4NIRmDEd $dblink=mysql_connect("localhost","root","shh123"); 2wgg7[tGi mysql_select_db("bbs"); 8h4'(yGQQW $counter=1; {
buy"X4 set_time_limit(300); r(2uu $query="insert into board (board_name,board_manager) values ('test','test')"; BV+ Bk+ $begin_time=time(); T"}vAG( .O for ($i=1;$i<=10000;$i++){ ++#5 mysql_db_query("bbs",$query); ;]jNk'oa $counter++; \_6/vZ%-B } Zoc0!84<z $end_time=time(); *r% c mysql_close($dblink); UEVG0qF echo "test db speed...<br>"; .K<Q& echo "begin time:".$begin_time."<BR>"; "v4B5:bmqW echo "<BR>end time:".$end_time."<BR>"; wsVV$I[2 $total=$end_time-$begin_time; mo#04;VF echo "total spent time:".$total; Dl8;$~ ?> 1~QPG\cdIX t>B;w14 用来测试oracle的程序: |qZ1| 7
^mL_SMj <?php [\b0Lem $handle=OCILogon("php_oracle","php_oracle"); ?8Cq{ {T
Ug.%u $counter=1; )Iq <+IJ set_time_limit(300); a+T.^koY $query="insert into board (board_id,board_name,board_manager) values (:board_id,'test','test')"; f:.I0 ST $state=OCIParse($handle, $query); QS]1daMIK< OCIBindByName($state, ":board_id", &$i,32); nL.<[]r $begin_time=time(); !o[7wKrXb for ($i=1;$i<=10000;$i++){ H&}pkrH~ ociexecute($state); g^ i&gNDx } +V^;.P</ $end_time=time(); h.s+)fl\ OCIFreeStatement($state); t\j*}# S ocilogoff($handle); VD]zz
^ echo "test db speed...<br>"; JO"<{ngsQ echo "begin time:".$begin_time."<BR>"; Wh2tNyS echo "<BR>end time:".$end_time."<BR>"; "4,?uPi $total=$end_time-$begin_time; }t1a*z echo "total spent time:".$total; RTJ3qhY ?> XJ5. 3%;a)c;D 测试结果: R=
o2K ;H.^i|_/ 环境:win32+apache+php4+mysql 5=?\1`e1[ 结果:28秒 YNj`W1 u4%Pca9(= 环境:win32+apache+php3+mysql Hi`//y*92H 结果:34秒 3az& | |