MySQL中输入语句的执行过程:

如果我们可以将上面的过程简化,吧语法分析或者编译等步骤简化,则可以将整个流程简化。

存储过程:

  • 是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理;
  • 增强SQL语句的功能和灵活性;
  • 实现较快的执行速度;
  • 减少网络流量
  • //创建存储过程
    CREATE
    [DEFINER = {user | CURRENT_USER}]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body proc_parameter:
    [IN | OUT | INOUT ] param_name type
    //IN,表示该参数的值必须在调用存储过程时指定
    //OUT,表示该参数的值可以被存储过程改变,并且可以返回
    //INOUT,表示该参数的调用时指定,并且可以被改变和返回
    //调用存储过程
    CALL sp_name([parameter[,...]])
    CALL sp_name[()]
  • //For example:
    CREATE PROCEDURE sp1() SELECT VERSION(); CALL sp1();
    //For example:
    DELIMITER //
    CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
    BEGIN
    DELETE FROM test WHERE id = p_id;
    END
    // DELIMITER ;
    CALL removeUserById(3);
  • 用@修饰的变量叫做用户变量,跟当前用户的客户端是绑定的。
  • 存储过程较常用,一般独立的来执行,而函数可以作为其他SQL语句的组成部分来出现;
  • 注意事项:
    • 创建存储过程或者自定义函数时需要通过delimiter语句修改定界符;
    • 如果函数体或过程提有多个语句,需要包含在BEGIN...END语句块中;
    • 存储过程需要使用call来调用。

存储引擎:

MySQL可以将数据以不同技术存储在文件(内存)中,这种技术就成为存储引擎;

每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

MySQL主要包括五种存储引擎:MyISAM, InnoDB, Memory, CSV, Archive;

  • 并发控制:当多个连接对记录进行修改时保证数据的一致性和完整性;

    • 共享锁(读锁):在同一个时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。
    • 排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。
    • 锁颗粒:
      • 表锁,是一种开销最小的锁策略;
      • 行锁,是一种开销最大的锁策略。
  • 事务
    • 事务用于保证数据库的完整性
    • 事物的特性(ACID):原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)
  • 索引
    • 是对数据表中一列或多列的值进行排序的一种结构。

MySQL(七) —— MySQL存储过程 & 存储引擎的更多相关文章

  1. 【MySQL】MySQL(四)存储引擎、索引、锁、集群

    MySQL存储引擎 MySQL体系结构 体系结构的概念 任何一套系统当中,每个部件都能起到一定的作用! MySQL的体系结构 体系结构详解 客户端连接 支持接口:支持的客户端连接,例如C.Java.P ...

  2. 《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记

    一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...

  3. mysql 数据表操作 存储引擎介绍

    一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...

  4. mysql 库操作、存储引擎、表操作

    阅读目录 库操作 存储引擎 什么是存储引擎 mysql支持的存储引擎 如何使用存储引擎 表操作 创建表 查看表结构 修改表ALTER TABLE 复制表 删除表 数据类型 表完整性约束 回到顶部 一. ...

  5. MySQL开发篇,存储引擎的选择真的很重要吗?

    前言 谁说MySQL查询千万级别的数据很拉跨?我今天就要好好的和你拉拉家常,畅谈到深夜,一起过除夕!这篇文章也是年前的最后一篇,希望能带给大家些许收获,不知不觉查找文档和参考实体书籍就写了这么多,自己 ...

  6. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  7. mysql不同版本和存储引擎选型的验证

    Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路. 主要涉及: Mysql的版本 v Mariadb v Tokudb v Orac ...

  8. MySQL表类型和存储引擎版本不一致解决方法

    使用的是老版本的mysql客户端Navicate 8 ,mysql 服务端用的是mysql5.6的版本,在修改版本引擎的时候出现版本不对; mysql error ‘TYPE=MyISAM’ 解决办法 ...

  9. mysql技术内幕InnoDB存储引擎-阅读笔记

    mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太 ...

随机推荐

  1. OpenGL笔试题

    简述FrameBuffer,RenderBuffer,Depth Buffer,Framebuffer attachment,Stencil buffer的关系 简述利用OpenGL执行图像叠加(大P ...

  2. Sql server analysis service 通过IIS连接时的最大连接数问题

    做过SSAS项目的大部分人都应该知道SSAS是可以通过在IIS上建立代理站点的方式来建立远程连接的,这样可以绕过连接到SSAS时需要在同一个域环境下通过域用户来验证的问题,这样即使连接到SSAS的客户 ...

  3. SQL删除重复数据方法

    例如: id           name         value 1               a                 pp 2               a           ...

  4. android实操--练习1

    这两天有空,打算把一些文档整理一下,快要考试了,找一些简单的例子来做做,重温安卓的知识. 下面是第一个练习: 实现很简单,下面我们来看看: 首先新建一个安卓项目Demo1 接着是界面的布局(包括act ...

  5. Spring项目启动时执行初始化方法

    一.applicationContext.xml配置bean <bean id="sensitiveWordInitUtil" class ="com.hx.daz ...

  6. mmap DMA【转】

    转自:http://blog.csdn.net/lihaoweiv/article/details/6275241 第 13 章  mmap 和 DMA 本章将深入探讨 Linux 内存管理部分,并强 ...

  7. Java 门面模式 浅析

    Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用.在Tomcat的HttpServletReque ...

  8. 【Pro ASP.NET MVC 3 Framework】.学习笔记.8.SportsStore:管理

    管理功能,如何身份认证,对controller和action方法过滤安全的访问,并在用户需要时提供证书. 1 添加分类管理 方便管理的controller,有两类页面,List页面和edit页面. 1 ...

  9. JavaEE基础(二)

    1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用 ...

  10. PHP上传文件详解 错误提示

    首先在php.ini里配置上载文件.有以下几个重要的配置单: 选项 默认值 说明 post_max_size 8M 控制以后的POST请求的最大规模.必须大于upload_max_filesize选项 ...