《MySQL进阶》

存储过程

存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理.
SQL语句的执行过程:SQL命令–>MySQL引擎–(分析)–>语法分析–(编译)–>可识别命令–(执行)–>执行结果–(返回)–>客户端
储存过程功能:使SQL的执行可以省略上述(编译)过程(从第二次执行某条命令开始,第一次还是要编译的,只是以后再次执行时,储存过程直接调用储存在内存中的编译结果,而不是再次编译),提高执行速度.
注意事项:
- 创建存储过程或函数时,需要通过delimiter来修改定界符
- 如果过程体或函数体有多个语句,需要包含在begin…end语句块中
- 通过call来调用

delimiter //
create procedure foo(in p_id int, out num int)
    begin
    delete from user1 where id=p_id;
    select count(*) from user1 into num;
    end//  #创建存储过程
delimiter ;
call foo(1, @num);  # 调用存储过程
select @num;

drop procedure foo; # 删除存储过程 

select row_count();  # 返回增、删、插入影响的行数.

存储过程与函数区别
- 存储过程可以返回多个值,函数只有一个返回值
- 存储过程一般独立执行、函数可以作为其他SQL语句的组成部分出现

存储引擎

MySQL可以将数据以不同技术存储在文件中,这种存储技术就是存储引擎. 每种存储引擎使用不同的存储机制,索引技巧、锁定水平.
存储引擎:MyISAM、InnoDB
并发处理:锁
共享锁(读锁):在同一时间段,多个用户可以读同一个资源、读取过程中数据不会发生任何变化.
排它锁(写锁):在任何时候都只能有一个用户写入资源.
锁颗粒
表锁:开销小,一张表一个锁;行锁:开销大,每行都一个锁.
索引:对数据表一列或多列的值进行排序的一种结构,用于快速定位到某条记录.

特点MyISAMInnoDBMemoryArchive
存储限制256TB64TB内存大小
事务安全-支持--
支持索引支持支持支持-
锁颗粒表锁行锁表锁行锁
数据压缩支持--支持
支持外键-支持--

设置存储引擎

# /etc/mysql/my.cnf中设置
[mysqld]
default-storage-engine=engine

create table tb_name(
    ...
    ) engine=MySIAM;

alter table tb_name engine=InnoDB; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值