MySQL锁表

1、锁:计算机协调多个进程或线程并发访问某一资源的机制​

2、MySQL锁:

不同的存储引擎支持不同的锁机制​

1)页级锁:引擎DBD(也支持表级锁)

​开销和枷锁时间结余表锁和行锁间;会出现死锁;锁定力度介于表锁和行锁间,并发度一般

2)表级锁:引擎MyISAM、MEMORY

锁住整个表,可同时读,写不行

​开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突概率最高,并发度最低

适合以查询为主,只有少量按索引条件更新数据的应用​

模式:表共享读锁、表独占写锁​

3)行级锁:引擎INNODB​(默认行级锁,也支持表级锁)

单独的一行记录加锁

​有索引情况下为行锁,无索引则为表锁

​开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突概率最低,并发度也最高​

适合有大量按索引条件并发更新少量不同的数据,同时又有并发查询的应用​

*注:事务

是由一组SQL语句组成的逻辑处理单元​,四个属性:

​原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全都不执行;

​一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态;

​隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行;

​持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

​InooDB两种模式的行锁:

1)共享锁:允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。 ( Select * from table_name where ……lock in share mode)

2)排他锁:允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和 排他写锁。(select * from table_name where…..for update)

为了允许行锁和表锁共存,实现多粒度锁机制;同时还有两种内部使用的意向锁(都是表锁),分别为意向共享锁和意向排他锁。

InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值