用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下关于中英数字混排的字符串分割问题
Apr 06 PHP
php简单实现快速排序的方法
Apr 04 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
详解php的socket通信
Aug 11 PHP
php中删除、清空session的方式总结
Oct 09 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
laravel model 两表联查示例
Oct 24 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
测试php函数的方法
2013/11/13 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
js实现图片粘贴到网页
2019/12/06 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
高考考python编程是真的吗
2020/07/20 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
入党积极分子思想汇报
2014/01/02 职场文书
道路交通安全实施方案
2014/03/12 职场文书
征兵宣传标语
2014/06/20 职场文书
2015年公务员工作总结
2015/04/24 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL
Python 中的 copy()和deepcopy()
2021/11/07 Python