用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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
PHP基础学习小结
Apr 17 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
Thinkphp单字母函数使用指南
May 08 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
通过代码实例解析PHP session工作原理
Dec 11 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环境――Appserv
2006/12/13 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
简单的js计算器实现
2016/10/26 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
django实现分页的方法
2015/05/26 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
详解python中__name__的意义以及作用
2019/08/07 Python
pytorch 常用线性函数详解
2020/01/15 Python
keras 多任务多loss实例
2020/06/22 Python
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
品管员岗位职责
2013/11/10 职场文书
小学红领巾中秋节广播稿
2014/01/13 职场文书
环保建议书400字
2014/05/14 职场文书
公司年会策划方案
2014/05/17 职场文书
学雷锋倡议书
2015/01/19 职场文书
爱心捐款感谢信
2015/01/20 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android