Mysql存储过程分析

为了搞明白为什么mysql的存储过程是高效的,我们需要理解mysql的执行流程是什么,当输入sql语句之后,mysql会先进行sql语句语法正确性检查,然后再进行编译,然后才执行,最后把结果返回。如下图所示:


      普通sql语句经过mysql的引擎进行语法分析和编译之后才会执行,存储过程在第一次运行的时候也是需要语法分析和编译,但是后面再调用该存储过程不再需要语法分析和编译,这样就大大提高了sql的执行效率。

什么是存储过程?

存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。

存储过程的优点:

1 增强了sql语句的功能和灵活性

2 实现较快的执行速度

3 减少了网络流量

创建存储过程

CREATE 用户 PROCEDURE 存储过程名称(参数1,参数2,...)

过程体

参数的类型有三种:IN OUT INOUT

过程体:1 过程体由任意的合法的sql语句组成

时间: 2024-10-12 10:10:37

Mysql存储过程分析的相关文章

java实现调用Mysql存储过程分析代码

数据库的测试代码如下 : 1.新建表test,sql代码如下: create table test( field1 int not null ) TYPE=MyISAM ; insert into test(field1) values(1); 2.删除已存在的存储过程,代码如下: delimiter // -- 定义结束符号 drop procedure p_test; 3.mysql存储过程定义,代码如下: create procedure p_test() begin declare te

mysql存储引擎

mysql的物理文件组成包括错误日志,查询日志,慢查询日志,事务日志,二进制日志. 日志文件中记录mysql数据库运行期间发生的变化,记录mysql数据库的客户端连接状况,sql语句的执行情况和错误信息. mysql的逻辑结构可以看成是二层架构,第一层叫做SQL layes,数据库系统处理底层数据库之前的所有工作都在这一层完成,包括权限判断,sql解析,执行计划优化,query cache的处理等.第二层就是存储引擎层,叫做storage engine layes,也是底层数据存取操作实现部分,

MySQL存储写入速度慢分析

问题背景描述: 在MySQL中执行SQL语句,比如insert,贼慢,明明可能也就只是一行数据的插入,数据量很小,但是耗费的时间却很多,为什么? 一.存储结构分析 MySQL存储结构图: 解析: 1.读操作:内存读-->cache缓存读-->磁盘物理读 读取到的数据会按上述顺序往回送. 2.写操作:内存数据直接写入cache缓存(非常快)-->写入disk 由上可知,MySQL之所以读写速度快,cache在其中起到了关键作用. 1.Cache缓存特点: 1.速度快 2.掉电数据丢失 3.

mysql 存储引擎 myisam innodb 区别

虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看两种存储引擎的区别. MySQL存储引擎MyISAM与InnoDB的区别 一.InnoDB支持事务,MyISAM不支持,这一点是非常之重要.事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了. 二.MyISAM适合查询以及插入为主的

五花八门的MySQL存储引擎,哪一盘是你的菜?

一.MYSQL中存储引擎分类及应用场合 MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BLACKHOLE. MySQL支持数个存储引擎作为对不同表的类型的处理器.MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: 1.MyISAM管理非事务表 它提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认

MySQL存储引擎比较

MySQL常用的存储引擎为MyISAM.InnoDB.MEMORY.MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM是MySQL的默认存储引擎.MyISAM不支持事务.也不支持外键,但其访问速度快,对事务完整性没有要求. InnoDB存储引擎提供了具有提交.回滚和崩溃恢复能力的事务安全.但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引. MEMORY存储引擎使用存在内存中的内容来创建表.每个MEMORY表

python+ mysql存储二进制流的方式

很多时候我们为了管理方便会把依稀很小的图片存入数据库,有人可能会想这样会不会对数据库造成很大的压力,其实大家可以不用担心,因为我说过了,是存储一些很小的图片,几K的,没有问题的! 再者,在这里我们是想讲一种方法,python+ mysql存储二进制流的方式 这里用的是Mysqldb,python里面最常用的数据库模块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

MySQL存储日志并使用Loganalyzer作为前端展示

MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主机服务的状态和所作出的操作,我们可以在较大型的网络架构中使用ELK来实现对日志的收集.检索.前端显示,但是中小型架构中使用rsyslog足以对所有服务器的日志进行收集和检索来达到实时分析数据流量的目的. 本文目标 使用rsyslog将两台主机的日志信息存储到MySQL数据库中,并且编译安装Loganalyzer对MySQL中的日志信息使用httpd+php在前

MySQl学习-——Mysql体系结构与Mysql存储引擎

Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图: 1)        Connectors:指的是不同语言中与SQL的交互 max_connections 就是整个MySQL实例的最大连接数限制 max_user_connections 是单个用户的最大连接数,这里未指明是哪个用户,是任意一个用户. 2)        Management Serveices & Utilities:系统管理和控制工具 备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据