用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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
上传多个文件的PHP脚本
Nov 26 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
PHP 翻页 实例代码
Aug 07 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php检测文本的编码
Jul 26 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 PHP
laravel中Redis队列监听中断的分析
Sep 14 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+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
使用python实现生成用户信息
2017/03/20 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Python中collections模块的基本使用教程
2018/12/07 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Python基于当前时间批量创建文件
2020/05/07 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
大学生志愿者感言
2014/01/15 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
总经理任命书
2014/03/29 职场文书
应届生找工作求职信
2014/06/24 职场文书
教师年度考核个人总结
2015/02/12 职场文书
道歉信怎么写
2015/05/12 职场文书
小学六年级毕业感言
2015/07/30 职场文书
施工安全责任协议书
2016/03/23 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript