MYSQL存储引擎

MYSQL架构

 

存储引擎:一种针对于文件的读写机制(N种) 

存储引擎是基于表的

1、MYISAM     支持全文索引 不支持外键、不支持事务 (表锁)

2、INNODB      不支持全文索引 支持外键、支持事务 (行锁)

锁机制:

1、MYISAM(所有的连接称为会话)

表锁    锁定方式 1、读锁(共享读锁)

                           2、写锁(独占写锁)不允许其他连接读也不允许写

MYISAM       select系统自动加读锁

                     updata insert delete 系统自动加写锁

2、INNODB(所有的连接称为事务)

行锁     锁定方式 1、读锁(共享锁)

                            2、写锁(排它锁)      加行锁不影响其他连接的查询

select    不加锁     updata insert delete 加写锁

1、读锁是共享锁-------》读锁和读锁共享    lock in share mode  加读锁

2、写锁是排它锁--------》不允许其他的锁出现   for update   加写锁

INNODB行锁加在主索引上(非索引查询加的是表锁     索引查询加的是行锁)

乐观锁(通过版本控制实现)悲观锁 意向锁 间隙锁

事务:一组SQL语句的集合

A、原子性     C、一致性     I、隔离性  D、持续性

没有隔离性可能会导致的问题

        1、脏读(事务回滚导致)

        2、不可重复读(修改操作导致)

        3、幻读(插入和删除操作导致)

隔离级别(select @@ tx_isolation)

1、未提交读    会出现(脏读、不可重复读、幻读)问题

2、已提交读    会出现(不可重复读、幻读)问题

3、可重复读    会出现(幻读)问题    是MYSQL默认的隔离级别

4、可序列化

不可重复读的解决:事务执行过程中,新执行的任务看不到事务执行的结果

MYSQL里的两个日志

1、redo log重做日志:记录事务将要执行的操作   日志先行----->先将日志写到操盘上,再执行日志里的操作,宕机时不会影响

2、undo log未做日志:记录每个操作的状态(select操作状态不记录,因为不修改数据)回滚主要借助undolog

两个日志保证原子性

一致性:锁机制

持续性:日志系统

触发器:当一个事件到来触发另一个事件的发生

创建:          delimiter(修改结束符) $

create  trigger  tri_name(触发器的名字)

trigger_time(触发时间)  before  after

trigger_event(触发事件) insert  update delete (select不会触发触发器)

on tb_name(基于某个表)
 for each row
        trigger_stmt;(做的其他事)

create trigger tri_1
    after
    insert
    on test
    for each row
    begin
        set @count = @count + 1;
    end $
   存储过程(一个函数)能返回n多个返回值    存储函数返回一个返回值

(select update insert)可以写成一个函数    

create procedure pro_name(存储过程名称)(参数属性 参数名称 参数类型,...)
    begin
        pro_stmt
    end

IN(输入型参数)OUT(输出型)INOUT(输入输出型参数)
  delimiter &
    create procedure pro_3(INOUT tmp int)
    begin
        select tmp;
        set  tmp = 20;
        select tmp;
    end &
    delimiter ;  

输入型参数只做输入 是值传递

输出型参数只做输出  tmp形参为NULL

打印也是用select打印

select"hello world";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值