Mysql 事务学习笔记
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不是. 一个事务开始的时候,只能看见自己已经提交的修改.
在不提交前,对其他事务完全不可见.
- 大多数数据库的默认级别都是Read committed.Mysql不是. 一个事务开始的时候,只能看见自己已经提交的修改.
- REPEATABLE READ
- REPEATABLE READ 解决了脏读的问题,该级别保证同一个事务多次读取结果是一致的. 但同事导致幻读的问题.当读取某个范围的数据的时候,里一个事务又在该范围内插入新的数据
当之前事务在读取的时候会产生幻行.
- REPEATABLE READ 解决了脏读的问题,该级别保证同一个事务多次读取结果是一致的. 但同事导致幻读的问题.当读取某个范围的数据的时候,里一个事务又在该范围内插入新的数据
- SERIALIZABLE
- 最高Isolation Level级别,通过强制事务串的执行.避免了之前说的幻读,SERIALIZABLE 会在每一行数据加锁.所以可能导致大量超时和锁争抢的问题.
非常少用.只有当需要保持数据一致性而接受没有并发的情况下才考虑.
- 最高Isolation Level级别,通过强制事务串的执行.避免了之前说的幻读,SERIALIZABLE 会在每一行数据加锁.所以可能导致大量超时和锁争抢的问题.
- Read uncommited
- 隔离级别Isolation Level
- 一个事务在做修改成功之前,对其他的事务是不课件的. 当你对一个账户进行取款操作,那么另一个程序是无法看见你的操作结果.直到你成功之前
- 持久性(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 事务学习笔记相关推荐
- Mysql事务[学习笔记]
一.事务的应用场景说明 什么是事务: 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的.转账是一个用户扣钱,另一个用户加钱.如果其中有一条 SQL 语句出现异常,这条 SQL ...
- ci mysql 事务_MySQL事务-学习笔记
MySQL事务-学习笔记 MySQL事务 事务的意义 案例:银行转账过程 A向B转账500,A原来有1000,B有500. 分析: SQL处理过程: A 减少 500 B 增加 500 以上两点必须同 ...
- MySQL 索引学习笔记
MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...
- MySQL语法学习笔记
MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...
- 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)
数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...
- Mysql 高级学习笔记
Mysql 高级学习笔记 文章目录 Mysql 高级学习笔记 一.Mysql 基础 1. 聚合函数 2. having 3. sql 的执行顺序 4. 约束 5. 试图 二.Mysql 高级 1. M ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
最新文章
- tomcat的基本使用
- AMD 发布 Stream SDK for Linux
- css布局:块级元素的居中
- .net 4 环境调用 .net 2 编译的DLL
- curl的安装及使用
- 2020年 显卡天梯图 / Top Graphics Ranking
- Django菜鸟教程
- win10安装Visual Studio2019时卡在了提取文件处
- 使用FFmpeg将文件转为ts
- 无需写代码,又一个数据动态图制作利器
- 企业小程序应该如何开发?
- [Shoi2011]双倍回文
- 清华才子王垠​加入华为职级22,前阿里P10赵海平加入字节跳动,职级或为4+
- 长沙麻将APP思路整理
- Scanner警告问题
- 内蒙古大学考研复试计算机,内蒙古大学计算机考研复试题
- 中文书籍对《人月神话》的引用(161-170本):卓有成效的CIO、核心测试过程(20211107更新)
- Linux-X86和Linux-ARM编译binutils
- IPv6 基本首部、地址和过渡
- 2.4G 无线收发芯片 XL2400 SOP8封装 射频芯片 带规格书