webn |
2005-10-24 13:17 |
用PHP连mysql和oracle数据库性能比较
用PHP连mysql和oracle数据库性能比较 0pu])[P]_[ @}x)>tqD 测试硬件说明: _q=$L
eO5 测试使用的是我的爱机,配置如下: A
A<9XC CPU:C433 9GkG' 内存:128M "^<:7 _Y 硬盘:酷鱼2代20G %I%F
!M J
C1T033 r 测试软件说明: &.o}(e:] WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5 n\*>mp) linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,mysql 3.22.32 42Vy#t/HC *=S\jek 测试代码说明: ?YgK]IxD 使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下: h.4;-& mysql的表结构: ^=D77 jS CREATE TABLE board ( eJ%~6c`@! board_id smallint(6) NOT NULL auto_increment, Z5-"a?{Y board_name char(16) NOT NULL, rQ*'2Zf'< board_manager char(20), B{/Pv0y PRIMARY KEY (board_id) ~?-U
J^# ); `U!eh1*b oracle的结构: +tkd($// CREATE TABLE PHP_ORACLE."BOARD" xv7^ ("BOARD_ID" FLOAT, m2{z "BOARD_NAME" CHAR(16) NOT NULL, ))G%C6- "BOARD_MANAGER" CHAR(20)) ; ,A
=%!p+ x7Ly, 我们只测试了INSERT操作花的时间,对于select,并未作测试。 \D, 0 因为win32下只有PHP3才能连接oracle数据库,所以只测试了用PHP3连接oracle的性能。相 \#2,1W@ 信在PHP4的正式版本出来后,用PHP4连接oracle的速度应该有所提升。 c2?(.UV 而在LINUX下,因为我没有装oracle,所以只测试了mysql的性能。据说在LINUX下,oracle J%f5NSSU{6 的性能不错,只是无法测试。 Q-O:L 并且我们将所有的用于数据库连接和oracle用来分析sql语句的代码都放在了统计代码之外 x}N+vK ,所以测试得出的时间只是用于执行SQL操作所花费的时间。 t wtGkkC wXXv0OzK 用来测试mysql的程序: qg:1 -&))$h3o\ <?php +Z$X5Th $dblink=mysql_connect("localhost","root","shh123"); }%$9nq3 mysql_select_db("bbs"); 0gO2^m)W $counter=1; 9Wx q set_time_limit(300); _h@7>+vl~ $query="insert into board (board_name,board_manager) values ('test','test')"; U@m< $begin_time=time(); [:g6gAuh, for ($i=1;$i<=10000;$i++){ Ao`9 fI#q mysql_db_query("bbs",$query); ^;W,:y& $counter++; # dW$"u } 8dIgw $end_time=time(); _=q)lt-UY mysql_close($dblink); :r^i0g|5P echo "test db speed...<br>"; I.y|AQB echo "begin time:".$begin_time."<BR>"; X-oou'4< echo "<BR>end time:".$end_time."<BR>"; o0s+ roiD $total=$end_time-$begin_time; rI;e!EW echo "total spent time:".$total; 4(u+YW GX ?> =kZPd>&L R*Pfc91} 用来测试oracle的程序: pl
q$t/.U; 0\o0(eHCQz <?php ((EN&X,v $handle=OCILogon("php_oracle","php_oracle"); Rc?wIL) /kx:BoV $counter=1; I7BfA,mZ7 set_time_limit(300); 4d0PW#97. $query="insert into board (board_id,board_name,board_manager) values (:board_id,'test','test')"; k[Uc_= $state=OCIParse($handle, $query); HewVwD<C OCIBindByName($state, ":board_id", &$i,32); C&<f YCwG $begin_time=time(); z56W5g2 for ($i=1;$i<=10000;$i++){ 8C4Tyms ociexecute($state); Z9=Cw0( w? } E# e=<R $end_time=time(); G-M!I`P OCIFreeStatement($state); 6<]&T lS] ocilogoff($handle); #MGZje,I echo "test db speed...<br>"; ZW+{<XTof4 echo "begin time:".$begin_time."<BR>"; 9J%dd0 echo "<BR>end time:".$end_time."<BR>"; BR5$;-7W $total=$end_time-$begin_time; ,@Ed)Zoh echo "total spent time:".$total; 5IdmKP| ?> zFB$^)v"< YfxZ< 测试结果: |P5?0{ ru'Xet 环境:win32+apache+php4+mysql hs<7(+a 结果:28秒 .%WbXs TKRu^KH9 环境:win32+apache+php3+mysql bG.aV#$FIg 结果:34秒 0p
Lb<& | |