当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用PHP连mysql和oracle数据库性能比较

PHP
PHP 开发环境的选择、建立及使用(5)
PHP 开发环境的选择、建立及使用(6)
PHP 开发环境的选择、建立及使用(7)
PHP 开发环境的选择、建立及使用(8)
PHP 开发环境的选择、建立及使用(9)
Win2003下APACHE PHP5 MYSQL4 PHPMYADMIN 的简易安装配置
PHP新手上路(八) 文件上传
PHP新手上路(九) 投票系统
PHP新手上路(十) 简易banner动态更替
PHP新手上路(十一) 数据库链接
PHP新手上路(十二)使用PHP来操作Oracle数据库
PHP新手上路(十三)PHP资源
PHP新手上路(十四) 其他杂项
session全教程(一)
session全教程(二)
session全教程(三)
PHP编码规范
第十五节--Zend引擎的发展 -- Classes and Objects in PHP5 [15]
第十四节--命名空间 -- Classes and Objects in PHP5 [14]
第十二节--类的自动加载 -- Classes and Objects in PHP5 [12]

用PHP连mysql和oracle数据库性能比较


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 104 ::
收藏到网摘: n/a

测试硬件说明:
测试使用的是我的爱机,配置如下:
CPU:C433
内存:128M
硬盘:酷鱼2代20G

测试软件说明:
WIN32下用的是windowsntserver4,sp5,apache1.3.12,php3.0.15和php4rc1,mysql3.22.29,oracle8.0.5
linux下用的是bluepointlinux1.0,apache1.3.12,php4rc1,mysql3.22.32

测试代码说明:
使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下:
mysql的表结构:
CREATETABLEboard(
board_idsmallint(6)NOTNULLauto_increment,
board_namechar(16)NOTNULL,
board_managerchar(20),
PRIMARYKEY(board_id)
);
oracle的结构:
CREATETABLEPHP_ORACLE."BOARD"
("BOARD_ID"FLOAT,
"BOARD_NAME"CHAR(16)NOTNULL,
"BOARD_MANAGER"CHAR(20));

我们只测试了INSERT操作花的时间,对于select,并未作测试。
因为win32下只有PHP3才能连接oracle数据库,所以只测试了用PHP3连接oracle的性能。相
信在PHP4的正式版本出来后,用PHP4连接oracle的速度应该有所提升。
而在LINUX下,因为我没有装oracle,所以只测试了mysql的性能。据说在LINUX下,oracle
的性能不错,只是无法测试。
并且我们将所有的用于数据库连接和oracle用来分析sql语句的代码都放在了统计代码之外
,所以测试得出的时间只是用于执行SQL操作所花费的时间。

用来测试mysql的程序:

<?php
$dblink=mysql_connect("localhost","root","shh123");
mysql_select_db("bbs");
$counter=1;
set_time_limit(300);
$query="insertintoboard(board_name,board_manager)values('test','test')";
$begin_time=time();
for($i=1;$i<=10000;$i++){
mysql_db_query("bbs",$query);
$counter++;
}
$end_time=time();
mysql_close($dblink);
echo"testdbspeed...<br>";
echo"begintime:".$begin_time."<BR>";
echo"<BR>endtime:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo"totalspenttime:".$total;
?>

用来测试oracle的程序:

<?php
$handle=OCILogon("php_oracle","php_oracle");

$counter=1;
set_time_limit(300);
$query="insertintoboard(board_id,board_name,board_manager)values(:board_id,'test','test')";
$state=OCIParse($handle,$query);
OCIBindByName($state,":board_id",&$i,32);
$begin_time=time();
for($i=1;$i<=10000;$i++){
ociexecute($state);
}
$end_time=time();
OCIFreeStatement($state);
ocilogoff($handle);
echo"testdbspeed...<br>";
echo"begintime:".$begin_time."<BR>";
echo"<BR>endtime:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo"totalspenttime:".$total;
?>

测试结果:

环境:win32+apache+php4+mysql
结果:28秒

环境:win32+apache+php3+mysql
结果:34秒

环境:win32+apache+php3+oracle8.0.5(oci函数)
结果:46秒

环境:linux+apache+php4+mysql
结果:10秒

结论:
在WIN32下,mysql的性能虽然不是很好,但和oracle8比起来,还是要快很多,尤其是我在
测试程序中,并没有将数据库连接的语句包括进来,所以这个测试结果只是插入数据所花费
的时间,而oracle的连接,天,太慢了!在我的机器上,连接一次,至少1-2秒钟。
而在LINUX下,mysql的性能相对于在WIN32下,又有了一个很大的飞跃。由28秒骤减到10秒。
所以,如果你不需要存储过程的支持,并且数据库量不是大的那么惊人的话,还是在LINUX
下使用mysql作为你的数据库吧!这个轻量级的数据库可以给你最佳的性能、可管理性和相
当不错的安全性。