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

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

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

  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万次,且这个客户端使用mysqlproxy连接mysql。 下表显示了他们的区别

插入方式 所需时间 存储过程 51秒 客户端 142秒 客户端+proxy 181秒

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

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

  具体可以看

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

  http://www.mysqlsystems.com

  http://www.mysqlsystems.com/bbs

时间: 2024-10-26 18:01:18

存储过程、存储函数的性能优势的相关文章

sql server存储过程、存储函数的加密、解密

server|存储过程|函数|加密|解密 存储过程.存储函数的加密:WITH ENCRYPTION<!--[if !supportLineBreakNewLine]--><!--[endif]--> CREATE procedure dbo.sp_XML_main @table_name nvarchar(260)='', @dirname nvarchar(20)='' WITH ENCRYPTION as begin ..............................

Oracle中 关于数据库存储过程和存储函数的使用_oracle

存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数.存储过程没有返回值.存储函数有返回值   创建存储过程      用CREATE PROCEDURE命令建立存储过程和存储函数.       语法:create [or replace] PROCEDURE过程名(参数列表) AS         PLSQL子程序体:   存储过程示例:为指定的职工在原工资的基础上长10%的工资 /*为指定的职工在原工资的基础上长10%的工资,并打印工资前和工资后的工资*/SQL>

Mysql 的存储过程和存储函数

优点: v 提高安全性 v 简化mysql查询 v 减轻带宽负担 缺点: v 增加服务器负担 v 对我们开发者来说,难度大一点 PHP中的函数 Function funname(参数){ //函数体 Return } 对于mysql,如果有返回值的存储程序,我们就称其为存储函数, 没有返回值的存储程序,我们就称其为存储过程. 下面主要是按存储过程来讲解 1.0快速案例: delimiter $ //代码块 end $ #调用存储过程 call show_times(); #查看存储过程 show

DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比

和其他数据库一样,DB2 V8 XML Extender提供了两种针对XML的存储和访问模型:XML文档可作为未解析文本完整地存储在CLOB列中,也可以被映射和分解到一套关系表中.这两种选择都有一些已知的性能限制.DB2 9中新的pureXML技术试图通过以其固有的层次格式存储和查询XML的方式来消除这些限制.本文描述了一系列度量方法,这些方法用于确定 pureXML 是否能够提供性能优势,并量化 pureXML和CLOB 或分解式存储之间的性能差异. 简介 DB2 9中的pureXML技术旨在

oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息

查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs;        结果可以是:        USERNAME                       PRIVILEGE                    

SQL Server存储函数的加密解密

server|函数|加密|解密 存储过程.存储函数的加密:WITH ENCRYPTION <!--[if !supportLineBreakNewLine]--> <!--[endif]--> CREATE procedure dbo.sp_XML_main @table_name nvarchar(260)='', @dirname nvarchar(20)='' WITH ENCRYPTION as begin .................................

MySQL存储过程、函数、触发器和视图的权限检查

当存储过程.函数.触发器和视图创建后,不单单创建者要执行,其它用户也可能需要执行,换句话说,执行者有可能不是创建者本身,那么在执行存储过程时,MySQL是如何做权限检查的? 在默认情况下,MySQL将检查创建者的权限.假设用户A创建了存储过程p()访问表T,并把execute的权限赋给了B,即使用户B没有访问表T的权限,也能够通过执行存储过程p()访问表T. 下面看一个例子: 首先,我们创建一个表test.t和两个用户a,b,并把权限赋予用户a root@(none) 05:39:45>crea

DB2 9 XML性能优势

前言 在关系数据库中存储 XML 数据会提供可靠性.可管理性以及 RDBMS 的其他优点.但是,如果采用笨拙的存储方法(比如分解和 CLOB),应用程序的性能就会出现问题.当IBM在DB2 9中引入pureXML之后两年,这个问题已经解决了. 当IBM在2006年推出DB2 9时,它的pureXML技术引起了广泛的关注.但是,人们并没有马上接受 "关系/XML" 混合型DBMS的思想.这种思想的好处很明显:通过把 XML 引擎和现成的 RDBMS 集成在一起,XML 数据可以轻松地合并

mysql存储过程与函数

  存储过程 存储过程是一段代码,由存储在一个数据库的目录中.声明式的和过程式的sql语句组成,可以从一个程序.触发器或者另一个存储过程调用它从而激活它. 每个存储过程包含至少3部分:一个参数列表.一个存储过程.一个名字. 一个数据库中的存储过程的名字必须是唯一的,就像表的名字一样. 一个参数列表可以有0个.1个或多个参数,通过这些参数,过程就可以和外界联系. 存储过程支持3中参数类型: 1.输入参数IN:数据可以传递到存储过程; 2.输出参数OUT:数据可以由存储过程传到外界; 3.输入输出参