加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL涉及加锁的问题总结

发布时间:2023-05-08 13:32:48 所属栏目:MySql教程 来源:
导读:今天小编分享的是MySQL涉及加锁的问题总结,可能大家对MysqL并不陌生,或者从来没有了解过MysqL。但是不用担心,今天小编会以最简单的描述来讲解MysqL涉及加锁的问题。一起来看看吧。

如何并发的访问数据库呢?答
今天小编分享的是MySQL涉及加锁的问题总结,可能大家对MysqL并不陌生,或者从来没有了解过MysqL。但是不用担心,今天小编会以最简单的描述来讲解MysqL涉及加锁的问题。一起来看看吧。

如何并发的访问数据库呢?答案就是加锁。接下来说一下,数据库的锁机制,数据库中都有哪些锁?

首先呢,锁是一种并发控制技术,锁是用来在多个用户同时访问同一个数据的时候保护数据的。

MySQL涉及加锁的问题总结

有2种基本的锁类型:

共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页被读取完毕,S锁立即被释放。在执行select语句的时候需要给操作对象(表或一些记录)加上共享锁,但加锁之前需要检查是否有排他锁,如果没有,则可以加共享锁(一个对象上可以加N个共享锁),否则不行。共享锁通常在执行完select语句之后被释放,当然也可能是在事务结束(包括正常结束和异常结束)的时候被释放,主要取决与数据库所设置的事务隔离级别。

排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。执行insert、update、delete语句的时候需要给操作的对象加排它锁,在加排他锁之前必须确认该对象上没有其他任何锁,一旦加上排它锁之后,就不能再给这个对象加其他任何锁。排它锁的释放通常是在事务结束的时候(当然也有例外,就是在数据库事务隔离级别被设置为Read Uncommitted(读未提交数据)的时候,这种情况下排他锁会在执行完更新操作之后被释放,而不是在事务结束的时候)。

既然使用了锁,就有出现死锁的可能。

产生死锁的四个必要条件:

互斥条件:一个资源每次只能被一个进程使用。

请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

不可剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。

环路等待条件:若干个进程之间形成一种头尾相接的循环等待资源关系。

只要系统发生了死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章