mysql查看表的锁级别_白话Mysql的锁和事务隔离级别!死锁、间隙锁你都知道吗?...

本文介绍了数据库的锁机制,包括乐观锁、悲观锁、读锁和写锁,以及表锁和行锁的原理与区别。重点讲解了MySQL中的InnoDB引擎支持的行锁,强调行锁对索引的依赖。同时,探讨了MySQL的事务隔离级别,包括四种不同的级别及其避免并发问题的效果。文章还提及了MVCC机制在可重复读隔离级别下的作用,并提出了在可重复读情况下解决幻读问题的间隙锁策略。最后,简述了死锁的概念及MySQL的死锁处理机制。
摘要由CSDN通过智能技术生成

听说微信搜索《Java鱼仔》会变更强哦!

本文收录于

(一)概述

我们把那些可能会被多个线程同时操作的资源称为临界资源,加锁的目的就是让这些临界资源在同一时刻只能有一个线程可以访问。这是当时在讲synchronized锁时提出的锁的概念。

数据库作为用户共享的一个资源,如何保证数据并发访问一致性也是所有数据库必须解决的问题,如何加锁是数据库并发访问性能的一个重要因素。

(二)关于数据库的锁

从加锁形式上分为乐观锁和悲观锁

从对数据库操作的类型分为读锁(共享锁)和写锁(排他锁)

读锁:多个读操作可以同时进行不会互相影响 写锁:当前写操作没有完成前,会排斥其他的读锁和写锁

从数据操作粒度上可以分为表锁和行锁

2.1 表锁

顾名思义,表锁就是锁住整张表。这种操作开销小,加锁快,不会出现死锁,但是锁的粒度大,并发度低。MyISAM引擎在操作数据时就会自动给数据加上表锁。

可以通过下面几个参数手动增加表锁:

lock table 表名 read(write)

查看表上加过的锁:

show open tables;

删除锁:

unlock tables;

加了读锁后,将限制写入;加了写锁之后,将限制读和写;

2.2 行锁

行锁就是锁住一行数据,这种做法开销大,加锁慢,会出现死锁。但是锁的粒度小,并发度最高。InnoDB支持行锁,同时InnoDB还支持事务。

通过一个简单的例子来介

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值