1读写锁

1.1为什么为出现读写锁?

当一个人在update这个数据,另一个人在select查询这个数据的时候.会产生一种数据混乱,应运产生的锁.

锁的概念:

  • 读锁是共享的,并且不会阻塞. 写锁则是排他的
  • 同一个时间内只能有一个用户写入.

1.2 锁粒度.

  • 太多的锁又会影响效率,为了保证效率,会给不同级别的失误.安排不同的锁.最好只是精确的锁定. 因为锁本身不仅影响效率,也消耗资源.通常情况下,锁越少效率越高.

锁策略,就是在锁的开销和数据的安全性做出平衡.大部分商业数据库并没有提供特别多选择,只是在表上加上行级锁.

1.3 Mysql 的锁策略

  • 表锁,最基本也是开销最小策略.搜定这张表,在用户对表修改时候,需要先获得锁,并且阻塞其他用户的读写操作. 只有没有写锁的时候其他用户才能获得读锁,并且读锁之前不会阻塞
  • 行级锁可以最大成都的支持并发处理

2 事务

事务是一组原子性的sql查询,如果能执行查询全部语句,那么查询全部,如果又一条语句不成功,那么所有的都不执行.事务都要经过ACID 测试不然没有意义

2.1 ACID事务的四项检测

  • 原子性(atomicity)

    • 一个事务被视为一个不可分割的最小工作单元.就像原子不可分割一样.
  • 一致性(consistency)
    • 数据库总是从一个一致性的状态转换为另一个一致性的状态.要么全部成功,要么全部失败,结果应该是一致的,不应该有的成功,有的失败.
  • 隔离性(Isolation)
    • 一个事务在做修改成功之前,对其他的事务是不课件的. 当你对一个账户进行取款操作,那么另一个程序是无法看见你的操作结果.直到你成功之前

      • 隔离级别Isolation Level

        • Read uncommited

          • 在READ UNCOMMITED级别. 事务中的修改,即使没有提交,对其他事务可见.
        • READ COMMITED
          • 大多数数据库的默认级别都是Read committed.Mysql不是. 一个事务开始的时候,只能看见自己已经提交的修改.
            在不提交前,对其他事务完全不可见.
        • REPEATABLE READ
          • REPEATABLE READ 解决了脏读的问题,该级别保证同一个事务多次读取结果是一致的. 但同事导致幻读的问题.当读取某个范围的数据的时候,里一个事务又在该范围内插入新的数据
            当之前事务在读取的时候会产生幻行.
        • SERIALIZABLE
          • 最高Isolation Level级别,通过强制事务串的执行.避免了之前说的幻读,SERIALIZABLE 会在每一行数据加锁.所以可能导致大量超时和锁争抢的问题.
            非常少用.只有当需要保持数据一致性而接受没有并发的情况下才考虑.
  • 持久性(durability)
    • 一旦事务提交,修改就会永久保存在数据库中.及时系统崩溃也不会丢失.这个策略主要保证数据不会丢失.而且上持久性也分不同的级别.有的持久程度高,又的持久程度低.

1-1 各种隔离级别的区别和特点

Isolation Level(隔离) 脏读可能性 不可重读可能性 幻读可能性 加锁读
Read uncommitted YES YES YES NO
READ COMMITTED NO YES YES NO
PEPETABLE READ NO NO YES NO
SERIALIZABLE NO NO NO YES

转载于:https://www.cnblogs.com/maxaimee/p/6534272.html

Mysql 事务学习笔记相关推荐

  1. Mysql事务[学习笔记]

    一.事务的应用场景说明 什么是事务: 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的.转账是一个用户扣钱,另一个用户加钱.如果其中有一条 SQL 语句出现异常,这条 SQL ...

  2. ci mysql 事务_MySQL事务-学习笔记

    MySQL事务-学习笔记 MySQL事务 事务的意义 案例:银行转账过程 A向B转账500,A原来有1000,B有500. 分析: SQL处理过程: A 减少 500 B 增加 500 以上两点必须同 ...

  3. MySQL 索引学习笔记

    MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...

  4. MySQL语法学习笔记

    MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...

  5. 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

    数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...

  6. Mysql 高级学习笔记

    Mysql 高级学习笔记 文章目录 Mysql 高级学习笔记 一.Mysql 基础 1. 聚合函数 2. having 3. sql 的执行顺序 4. 约束 5. 试图 二.Mysql 高级 1. M ...

  7. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

  8. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  9. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

最新文章

  1. tomcat的基本使用
  2. AMD 发布 Stream SDK for Linux
  3. css布局:块级元素的居中
  4. .net 4 环境调用 .net 2 编译的DLL
  5. curl的安装及使用
  6. 2020年 显卡天梯图 / Top Graphics Ranking
  7. Django菜鸟教程
  8. win10安装Visual Studio2019时卡在了提取文件处
  9. 使用FFmpeg将文件转为ts
  10. 无需写代码,又一个数据动态图制作利器
  11. 企业小程序应该如何开发?
  12. [Shoi2011]双倍回文
  13. 清华才子王垠​加入华为职级22,前阿里P10赵海平加入字节跳动,职级或为4+
  14. 长沙麻将APP思路整理
  15. Scanner警告问题
  16. 内蒙古大学考研复试计算机,内蒙古大学计算机考研复试题
  17. 中文书籍对《人月神话》的引用(161-170本):卓有成效的CIO、核心测试过程(20211107更新)
  18. Linux-X86和Linux-ARM编译binutils
  19. IPv6 基本首部、地址和过渡
  20. 2.4G 无线收发芯片 XL2400 SOP8封装 射频芯片 带规格书

热门文章

  1. C# 拖放操作源码详解2
  2. Silverlight4.0(9) 之 分页控件轻量级的Session
  3. ADAS辅助驾驶_自动驾驶_技术点列表
  4. Logistic Regression--逻辑回归算法汇总
  5. netty 5 alph1源码分析(服务端创建过程)
  6. Mysql连接数据库的操作
  7. 搭建LAMP环境示例
  8. 细节:以为字符串不为空
  9. DataGridView 判断新增行:
  10. ***帮兄设计实战分析