sql的锁机制

表锁:

        读锁(共享锁):对同一个数据,多个读操作可以同时进行,互不干扰。

        写锁(互斥锁):同一个数据只有一个用户可以在一个时间进行操作。

表锁:

一次对一个表进行加锁,mylsam使用表锁,开销小,加锁快,无死锁,容易发生表冲突,并发度低。

行锁:

一次对一行进行加锁,innodb使用行锁,开销大,加锁慢,容易出现死锁。并发度低,不容易发生表冲突。

读锁:

每一个访问数据的dos命令行,和对数据库客户端工具都是一个会话。

锁机制:lock table 表名 read;

解锁:unlock tables;

如果会话0一直读取着表,那么会话1就不能对表进行更改,只能进行读取。

写锁:

如果对表进行锁住后,会话0如果占用着表,那么会话1就不能对表进行crud操作。

MySQL表级锁的锁模式
MyISAM在SELECT操作时,会自动给设计的表加读锁。
进行DML操作时,会自动给表加写锁

表锁通过unlock tables释放锁,行锁通过commit提交事务或者rollback回滚事务,来释放锁
行锁,不同会话对不同的数据进行操作,互不干扰
如果没有索引,行锁会转为表锁
如果出现索引失效的操作,就会导致行锁变为表锁,会话之间互相等待
间隙锁: 行锁的一种特殊情况,在范围之内却不存在。
 

行锁分析
#行锁分析
SHOW STATUS LIKE '%innodb_row_lock%';
Innodb_row_lock_current_waits:当前等待锁的数量
Innodb_row_lock_time:等待总时常,从系统启动到现在的等待总时常
Innodb_row_lock_time_avg:平均等待时常
Innodb_row_lock_time_max:最长等待时常
Innodb_row_lock_waits:等待次数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值