mysql事务实战_MySQL实战45讲学习-事务相关笔记
1、务的特性:原子性、一致性、隔离性、持久性
2、多事务同时执行的时候,可能会出现的问题:脏读、不可重复读、幻读
3、事务隔离级别:读未提交、读提交、可重复读、串行化
4、不同事务隔离级别的区别:
读未提交:一个事务还未提交,它所做的变更就可以被别的事务看到
读提交:一个事务提交之后,它所做的变更才可以被别的事务看到
可重复读:一个事务执行过程中看到的数据是一致的。未提交的更改对其他事务是不可见的
串行化:对应一个记录会加读写锁,出现冲突的时候,后访问的事务必须等前一个事务执行完成才能继续执行
5、配置方法:启动参数transaction-isolation
6、事务隔离的实现:每条记录在更新的时候都会同时记录一条回滚操作。同一条记录在系统中可以存在多个版本,这就是数据库的多版本并发控制(MVCC)。
7、回滚日志什么时候删除?系统会判断当没有事务需要用到这些回滚日志的时候,回滚日志会被删除。
8、什么时候不需要了?当系统里么有比这个回滚日志更早的read-view的时候。
9、为什么尽量不要使用长事务。长事务意味着系统里面会存在很老的事务视图,在这个事务提交之前,回滚记录都要保留,这会导致大量占用存储空间。除此之外,长事务还占用锁资源,可能会拖垮库。
10、事务启动方式:一、显式启动事务语句,begin或者start
transaction,提交commit,回滚rollback;二、set
autocommit=0,该命令会把这个线程的自动提交关掉。这样只要执行一个select语句,事务就启动,并不会自动提交,直到主动执行commit或rollback或断开连接。
11、建议使用方法一,如果考虑多一次交互问题,可以使用commit
work and
chain语法。在autocommit=1的情况下用begin显式启动事务,如果执行commit则提交事务。如果执行commit work
and chain则提交事务并自动启动下一个事务。
脏读:
当数据库中一个事务A正在修改一个数据但是还未提交或者回滚,
另一个事务B 来读取了修改后的内容并且使用了,
之后事务A提交了,此时就引起了脏读。
此情况仅会发生在: 读未提交的的隔离级别.
不可重复读:
在一个事务A中多次操作数据,在事务操作过程中(未最终提交),
事务B也才做了处理,并且该值发生了改变,这时候就会导致A在事务操作
的时候,发现数据与第一次不一样了。 就是不可重复读。
此情况仅会发生在:读未提交、读提交的隔离级别.
幻读:
一个事务按相同的查询条件重新读取以前检索过的数据,
却发现其他事务插入了满足其查询条件的新数据,这种现象就称为幻读。
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样.
一般解决幻读的方法是增加范围锁RangeS,锁定检索范围为只读,这样就避免了幻读。
此情况会回发生在:读未提交、读提交、可重复读的隔离级别.
事务的隔离级别:
四种:读未提交 、 读提交 、 可重复读、 串行化。
mysql事务实战_MySQL实战45讲学习-事务相关笔记相关推荐
- MySQL实战45讲学习笔记
文章目录 MySQL实战45讲-学习笔记 01 基础架构:一条SQL查询语句是如何执行的? mysql逻辑架构 连接器 查询缓存 分析器 优化器 执行器 02 日志系统:一条SQL更新语句如何执行 r ...
- 极客时间MySQL实战45讲学习笔记
零:基础 第一讲:基础架构:一条SQL查询语句是如何执行的? MySQL的基本架构示意图 1.MySQL基础架构 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接 ...
- mysql执行动态说起来_MySQL实战45讲学习笔记:第十四讲
一.引子 在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数.这时候你可能会想,一条 select count(*) from t 语句不就解决了吗? 但是,你会发现 ...
- mysql 实战 45讲 学习笔记 基础知识 原理剖析
MySQL 实战45讲 持续更新中~ 00讲 开篇 我们知道如何写出逻辑正确的SQL语句来实现业务目标,却不确定这个语句是不是最优的 我们听说了一些使用数据库的最佳实践,但是更想了解为什么这么做 我们 ...
- 丁奇的MySQL实战45讲 学习笔记[链接]
收录一下, 方便自己查阅 <MySQL实战45讲>1~15讲 -丁奇,学习笔记 <MySQL实战45讲>16~30讲 -丁奇,学习笔记 <MySQL实战45讲>31 ...
- MySQL实战45讲学习笔记----查询结果返回过程分析
全表扫描时,客户端查询服务端数据库中大量数据,查询结果是如何返回给客户端的. 全表扫描对server层的影响 mysql -h$host -P$port -u$user -p$pwd -e " ...
- mysql事务实战_MySQL - 实战 (2) - 事务隔离
MySQL - 实战 (2) - 事务隔离 1 事务相关概念 MySQL 中,事务支持是在引擎层实现的 MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务 MySQL 原生的 MyISA ...
- mysql实战45讲(09-14)笔记
仅仅是笔记,用于自己理解 09 普通索引与唯一索引 查询过程 对于普通索引,查找到满足条件的第一个记录,需要查找下一个记录,直到碰到第一个不满足条件的记录. 对于唯一索引,由于索引定义了唯一性,查找 ...
- mysql gtid基础_MySQL 基础知识梳理学习(四)----GTID
在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制.GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高. 1 ...
最新文章
- JAVA 算法练习(二)
- March 2007 CTP Linq 的一些改变
- mysql5.7.19 创建用户_mysql5.7.19用户的创建和权限的操作
- 小白的CMMI3体验
- 如何自己亲手制作一个防疫地图?
- C++11新特性之左值右值及移动语句与完美转发
- 在fedora20下面手动为自己的安装程序创建桌面图标
- 常见图片格式总结--网页设计必备
- 利用MATLAB实现对一幅彩色图像的高斯滤波(不采用MATLAB函数)。
- 计算机第二章测试题及答案,计算机组成原理第二章练习题及答案
- java开源项目-SpringBoot在线教育平台
- 单片机之步进电机驱动篇(一)
- wifi辐射安全距离
- pycharm安装及添加桌面图标
- java队列处理高并发_Java高并发--消息队列
- Flash activex控件版本信息
- c语言自动售货机实验报告,c语言自动售货机实验报告(15页)-原创力文档
- ABS210-ASEMI高品质贴片整流桥堆
- 【C#编程】两点距离计算
- 跨跃平台交流无极限——linux下如何使用即时聊天工具,跨跃平台 交流无极限——Linux下如何使用即时聊天工具(一)...