深入理解MySQL锁与事务隔离级别

2021/6/11 2:21:45

本文主要是介绍深入理解MySQL锁与事务隔离级别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、锁定义

锁是计算机协调多个进程或线程并发访问某一资源的机制。
在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外, 数据也是一种供需要用户共享的资源。
如何保证数据并发访问的一致性、有效性 是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个 重要因素。

2、锁分类

性能上分为乐观锁(用版本对比来实现)和悲观锁
      乐观锁(用版本对比来实现)。比如说用数据库维护一个版本,某张表增加一个字段version
    比如存在一条数据,初始化的版本是V1,id字段也是1。
    查出这条数据,得到的版本号是V1,在当前事务中想要更新该字段的时候,需要先判断下更新的这条记录是否和当初从数据库查出的记录是一模一样的,一样才会更新。如果被其他线程更新过了,那当前更新就不能执行。
    简单说就是:其他线程更新完了,在此基础上不清楚是否更新过,直接更新的话很有可能导致其他线程的数据被覆盖掉。

      乐观锁相对于悲观锁来说,性能很好。乐观锁不能更新会直接返回,无需等待,而悲观锁会涉及到等待

对数据库操作的类型分,分为读锁写锁(都属于悲观锁)
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响
写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁

对数据操作的粒度分,分为表锁行锁

持续更新中



这篇关于深入理解MySQL锁与事务隔离级别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程