MySql中的锁

锁是计算机协调多个进程或者线程并发访问某一资源的机制。

MySql中的锁分为三类-->全局锁、表级锁、行级锁

1. 全局锁就是对整个数据库实例加锁,加锁后的整个实例处于只读状态。可以保证数据的一致性、完整性。(flush tables with read lock;)

2. 表级锁就是锁着整张表。主要分为三类-->表锁、元数据锁、意向锁

表锁分为表共享读锁和表独占写锁

加锁-->lock tables 表名 read/write; 释放锁-->unlock tables

元数据锁-->元数据锁过程是系统自动控制,无需显示使用,在访问一张表时会自动加上。维护数据的一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。 

意向锁-->为了避免元数据锁在执行时,加的行锁和表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。

意向共享锁-->与表锁共享锁read兼容,与表锁排它锁write互斥.

意向排他锁-->与表锁共享锁read及排它锁write都互斥。意向锁之间不会互斥

3.行级锁就是锁行数据。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加锁。主要分为三类-->行锁、间隙锁、临键锁

行锁-->锁定单个行记录的锁,防止其他事务对此进行update/delete。

间隙锁-->锁定索引记录间隙(不含记录),确保索引记录间隙不变,防止其他事务在间隙中insert,产生幻读。

临键锁-->行锁和间隙锁的组合。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值