php+mysql中存储过程性能简单比较
来源:互联网 发布:win7无网络无盘重装 编辑:程序博客网 时间:2024/05/16 15:00
PHP+MYSQL中,使用MYSQL的存储过程其实是很好的,而且效率还会快点的,
在这里,小结复习下MYSQL的用法吧,使用的是PDO
1
//不使用存储过程
$time = microtime(TRUE);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new PDO($dsn, $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
$stmt = $conn->prepare('delete from web.tbltest');
$stmt->execute();
$stmt = $conn->prepare('INSERT INTO web.tbltest (field1) values (?)');
foreach (range(0,1000) as $i) {
$stmt->execute(array($i));
}
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(TRUE) - $time));
2 使用存储过程
存储过程的写法:
CREATE OR REPLACE FUNCTION web.method1()
RETURNS numeric AS
$BODY$
BEGIN
DELETE FROM web.tbltest;
FOR i IN 0..1000 LOOP
INSERT INTO web.tbltest (field1) values (i);
END LOOP;
RETURN 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
$time = microtime(TRUE);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new PDO($dsn, $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
$stmt = $conn->prepare('SELECT web.method1()');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$out = $stmt->fetchAll();
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(TRUE) - $time));
可以看到结果对比如下:
without stored procedures
memory: 0.0023880004882812
seconds: 0.31109309196472
with stored procedures
memory: 0.0020713806152344
Seconds: 0.065021991729736
可以看到,用了存储过程的性能还是不错的
在这里,小结复习下MYSQL的用法吧,使用的是PDO
1
//不使用存储过程
$time = microtime(TRUE);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new PDO($dsn, $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
$stmt = $conn->prepare('delete from web.tbltest');
$stmt->execute();
$stmt = $conn->prepare('INSERT INTO web.tbltest (field1) values (?)');
foreach (range(0,1000) as $i) {
$stmt->execute(array($i));
}
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(TRUE) - $time));
2 使用存储过程
存储过程的写法:
CREATE OR REPLACE FUNCTION web.method1()
RETURNS numeric AS
$BODY$
BEGIN
DELETE FROM web.tbltest;
FOR i IN 0..1000 LOOP
INSERT INTO web.tbltest (field1) values (i);
END LOOP;
RETURN 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
$time = microtime(TRUE);
$mem = memory_get_usage();
$dsn = 'pgsql:host=localhost;dbname=gonzalo;port=5432';
$user = 'user';
$password = 'password';
$conn = new PDO($dsn, $user, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
$stmt = $conn->prepare('SELECT web.method1()');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$out = $stmt->fetchAll();
$conn->commit();
print_r(array('memory' => (memory_get_usage() - $mem) / (1024 * 1024), 'seconds' => microtime(TRUE) - $time));
可以看到结果对比如下:
without stored procedures
memory: 0.0023880004882812
seconds: 0.31109309196472
with stored procedures
memory: 0.0020713806152344
Seconds: 0.065021991729736
可以看到,用了存储过程的性能还是不错的
- php+mysql中存储过程性能简单比较
- mysql存储引擎性能比较
- mysql存储过程参数比较
- 简单的分页存储过程 php mysql mysqli扩展
- 分页存储过程性能比较 二分法
- mysql中存储过程
- mysql 中存储过程
- mysql中存储过程
- php+mysql开发过程中要有性能控制的概念
- mysql创建存储过程并在php中调用
- PHP调用MySQL存储过程
- php调用mysql 存储过程
- php mysql 存储过程实例
- php 执行mysql存储过程
- Php mysql 存储过程使用
- php调用mysql存储过程
- 简单的存储过程编写及MySQL中event调用
- MySql中一个简单的存储过程刷数据库数据
- ffmpeg for android stagefirght 硬件加速的编译方法
- drools的一些不错的资料和小结
- (转)apache 防止DDOS攻击的几个方法
- Java 巨量文件遍历
- 提供几本不错的J2EE电子书相关下载
- php+mysql中存储过程性能简单比较
- php中的两个DI解决方案
- 数据库:Oracle分区之三:索引分区
- (转)php中用.htaccess文件设置日志的级别
- 软件度量中的圈复杂度小结
- apache 2+PHP 5.3+FASTCGI相关小结
- PHP中的魔术变量小结
- MSB与LSB
- 介绍一个不错的服务器综合监控工具脚本集aspersa