MySQL(七) —— MySQL存储过程 & 存储引擎

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)
  • 索引
    • 是对数据表中一列或多列的值进行排序的一种结构。

 

 

posted @ 2016-04-25 15:44  江湖小妞  阅读(582)  评论(0编辑  收藏  举报