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


Posted in PHP onOctober 09, 2006

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

测试软件说明:
WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5
linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,mysql 3.22.32

测试代码说明:
使用一个很简单的表,mysql和oracle使用的表结构是一样的,都只有三个字段,结构如下:
mysql的表结构:
CREATE TABLE board (
   board_id smallint(6) NOT NULL auto_increment,
   board_name char(16) NOT NULL,
   board_manager char(20),
   PRIMARY KEY (board_id)
);
oracle的结构:
CREATE TABLE PHP_ORACLE."BOARD"
       ("BOARD_ID" FLOAT,
       "BOARD_NAME" CHAR(16) NOT NULL,
       "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="insert into board (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 "test db speed...<br>";
echo "begin time:".$begin_time."<BR>";
echo "<BR>end time:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo "total spent time:".$total;
?>

用来测试oracle的程序:

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

$counter=1;
set_time_limit(300);
$query="insert into board (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 "test db speed...<br>";
echo "begin time:".$begin_time."<BR>";
echo "<BR>end time:".$end_time."<BR>";
$total=$end_time-$begin_time;
echo "total spent time:".$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作为你的数据库吧!这个轻量级的数据库可以给你最佳的性能、可管理性和相 当不错的安全性。 

PHP 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
php防止sql注入的方法详解
Feb 20 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 PHP
利用文件属性结合Session实现在线人数统计
Oct 09 #PHP
PHP中上传大体积文件时需要的设置
Oct 09 #PHP
新版PHP极大的增强功能和性能
Oct 09 #PHP
用PHP开发GUI
Oct 09 #PHP
PHP中实现进程间通讯
Oct 09 #PHP
PHP利用COM对象访问SQLServer、Access
Oct 09 #PHP
新版mysql+apache+php Linux安装指南
Oct 09 #PHP
You might like
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
员工工作表现评语
2014/04/26 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
村庄绿化方案
2014/05/07 职场文书
法人代表证明书
2014/09/18 职场文书
高中开学感言
2015/08/01 职场文书
礼貌问候语大全
2015/11/10 职场文书
大学军训心得体会800字
2016/01/11 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL