存储过程、存储函数的性能优势

王朝网站推广·作者佚名  2011-12-04
窄屏简体版  字體: |||超大  

关于存储过程,非常多的人难以理解除了方便以外,它还带来了什么。

我用手头的机器做了下面一个测试。暂且先不管机器类型,和表结构(其实表结构类似于这个帖子里面)。

DROP PROCEDURE IF EXISTS insert_n_rows;

delimiter //

CREATE PROCEDURE insert_n_rows (IN loops INT)

BEGIN

DECLARE count INT;

SET count =loops;

WHILE count > 0 DO

INSERT INTO my_table values(NULL,0,

‘wwwwwwmmmmmyyyyyysssssqqqqllllcccccoooooooomm’,

‘jjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiddddddddddddddddeeeeeeeeee’);

SET count = count - 1;

END WHILE;

END;

//

delimiter ;

我试着调用这个存储过程插入了100万行。

后来又用客户端程序去一次插入1条这样的方式去执行100万次。

最后用客户端程序去一次插入1条这样的方式去执行100万次,且这个客户端使用mysql proxy连接mysql。 下表显示了他们的区别

插入方式

所需时间

存储过程

51秒

客户端

142秒

客户端+proxy

181秒

存储过程的速度要快于其他两种方式,原因很大成分在于它节省了网络开销,SQL语言解析,优化等等过程。

但毕竟数据库不擅长于过程式代码,所以用存储过程可以处理一些简单和小的过程。至于复杂的逻辑,让外部的语言去处理吧。

具体可以看

http://www.mysqlsystems.com/?p=325

http://www.mysqlsystems.com

http://www.mysqlsystems.com/bbs

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航