mysql 死锁分析

mysql数据库锁mysql数据库引擎不同实现数据库锁的机制也不同。本文只针对innodb引擎,工作中的常用的共享锁(S)和排他锁(X)共享锁:可存在多个,多个事务可同时持有,与排他锁互斥。排他锁:同一资源只存在一个,多个事务同时申请须排队等待。基本概念与操作基本概念1. s锁等级小于x锁,低级别锁升级高级别,需要重新申请,锁释放依赖事务提交。2. innodb行锁依...
摘要由CSDN通过智能技术生成

mysql数据库锁

mysql数据库引擎不同实现数据库锁的机制也不同。本文只针对innodb引擎,工作中的常用的共享锁(S)和排他锁(X)

  • 共享锁:可存在多个,多个事务可同时持有,与排他锁互斥。

  • 排他锁:同一资源只存在一个,多个事务同时申请须排队等待。

基本概念与操作
  • 基本概念
1. s锁等级小于x锁,低级别锁升级高级别,需要重新申请,锁释放依赖事务提交。
2. innodb行锁依赖列索引,如果没有索引,会升级表锁(涉及行锁,尽量使用索引,避免锁表)。
3. 5.0.1后mysql版本,自增序列索引不会锁表,之前版本会锁表。属于mysql优化,所以不需要关注并发插入自增序列会锁事务的问题。
4. mysql锁等待时常默认50秒,可以通过缩短时长来提高并发(根据业务来定)。
5. mysql有默认死锁检查机会,存在死锁,会主动关闭小事务来保证事务正常提交。可以通过命令查看死锁日志。
  • 基本操作
-- 自动提交
show variables like "autocommit";
set autocommit = off;

-- 锁等待时常
show variables like "Innodb_lock_wait_timeout";
set Innodb_lock_wait_timeout = 500;

-- 死锁检查
show variables like "in
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值