数据库锁的知识

锁主要是在多用户情况下保证数据库数据完整性和一致性。

锁的分类
分类属性具体类型
锁模式分类乐观锁、悲观锁
范围锁行锁、表锁
算法锁临间锁、间隙锁、记录锁
属性锁共享锁、排他锁
状态锁意向共享锁、意向排他锁

锁关系

update时会锁,delete时会锁,insert时不会锁。条件命中索引锁行,未命中索引锁全表。

行锁

行锁的触发是命中索引,条件命中几条就会锁几条。

  • 特征:锁冲突概率低,并发性高,但是可能出现死锁。

    -------------窗口A-------------------
    -- 关闭自动提交事务
    set autocommit = 0;
    SELECT * from section where id = 2;
    -- 修改第二行插入者id
    update section SET insertor = 1 where id = 2;
    
    --------------窗口B-------------------
    -- 关闭自动提交事务
    set autocommit = 0;
    -- 可以查询,查询出原来的结果
    SELECT * from section where id = 2;
    -- 修改第二行插入者id
    update section SET insertor = 3 where id = 2;
    
    -- [SQL]update section SET insertor = 3 where id = 2;
    -- [Err] 1205 - Lock wait timeout exceeded; try restarting transaction
    -- 这行被锁住了无法更新。
    
    --------------窗口C-------------------
    -- 关闭自动提交事务
    set autocommit = 0;
    SELECT * from section where id = 3;
    -- 修改另一行的插入者id
    update section SET insertor = 3 where id = 3;
    
    -- 可以被正常更新
    
    
表锁

表锁响应的是非索引字段,只要有非索引字段进行匹配就会锁全表

  • 特征:锁冲突几率低,不会出现死锁。
参考资料
  1. 深入理解数据库行锁与表锁
  2. 细谈数据库表锁与行锁
扩展资料
  1. 乐观锁与悲观锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值