MySqL(三)事务和锁机制

先说一个命令 Explain SQL语句 (\G  加不加这个都行) MySQL执行计划

https://blog.csdn.net/Anglry/article/details/105383495 本人转载的算是做了记录,当然有事烧纸,没事看看就行了,当然不想面向百度,mysql官网了解一下。

锁分类: 排他锁 共享锁 意向锁 间隙锁 临建锁 乐观锁 自增锁 悲观锁 行锁 表锁 页锁

日常扩展:https://blog.csdn.net/fu_zhongyuan/article/details/90244503  InnoDB的逻辑存储结构

乐观锁: version字段 版本标识

悲观锁(排他锁):mysql自带的锁

按照锁定的粒度可以分为:表锁 行锁 页锁   

表锁(table lock):意向锁(IX) 自增锁

行锁(row lock):间隙锁(X 范围锁,多行) 临建锁 记录锁 

X locks

针对锁的方式:排他锁(写锁X) 共享锁(读锁S)

锁的兼容:只有共享锁之间是兼容的 其他锁都不兼容

锁一般情况下很小认为去做操作,一般手动的也就两种:

select ... for up 加写锁

vselect ... lock in share mode 加读锁

锁的作用主要是用在事务隔离性上,用在并发上。(InnoDB注意点:加锁是对索引加的锁)

查看锁状态命令:show engine innodb status(查看InnoDB存储引擎的状态)

想要看完整信息 :set global innodb_status_output_locks=1

性能分析:set profiling = 1;        高版本上有一个单独的数据库performance_schema;

 select ... ;

show profiling for query 1;

show profiles;

下图是锁信息(没有事务的情况下):

死锁:LATEST DETECTED DEADLOCK  事务出现死锁进行回滚

多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。

隔离机制加锁类型

https://zhuanlan.zhihu.com/p/75673270

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值