ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-06-10 23:04:35  阅读:153  来源: 互联网

标签:隔离 数据库 更新 读锁 线程 悲观 MySQL 版本 级别


1、锁定义

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

2、锁分类

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

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

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

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

持续更新中

标签:隔离,数据库,更新,读锁,线程,悲观,MySQL,版本,级别
来源: https://blog.csdn.net/sxl123sxl/article/details/117792467

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有