用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 相关文章推荐
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
深入PHP FTP类的详解
Jun 13 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
PHP单例模式详细介绍
Jul 01 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
Laravel中的Auth模块详解
Aug 17 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP 文件上传限制问题
Sep 01 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 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:风雨欲来 路在何方?
2006/10/09 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
js中eval详解
2012/03/30 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
JS获取当前地理位置的方法
2017/10/25 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
JS随机密码生成算法
2019/09/23 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python实现逻辑回归的方法示例
2017/05/02 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python学生信息管理系统(完整版)
2020/04/05 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
python 标准库原理与用法详解之os.path篇
2021/10/24 Python