mysql进阶笔记
时间:2020-05-29
本文章向大家介绍mysql进阶笔记,主要包括mysql进阶笔记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
事务
事务的四大特性:原子性、一致性、隔离性、持久性
事务隔离级别:(隔离级别越高,并行性能依次降低,安全性依次提高),mysql InnoDB引擎默认隔离级别是可重复读
- 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。
- 读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。
- 可重复读是指,一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。
- 串行化,顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。
可重复读中的版本快照(务视图):InnoDB 里面每个事务有一个唯一的事务 ID,叫作 transaction id。它是在事务开始的时候向 InnoDB 的事务系统申请的,是按申请顺序严格递增的。
而每行数据也都是有多个版本的。每次事务更新数据的时候,都会生成一个新的数据版本,并且把 transaction id 赋值给这个数据版本的事务 ID,记为 row trx_id。
同时,旧的数据版本要保留,并且在新的数据版本中,能够有信息可以直接拿到它。
对于一个事务视图来说,除了自己的更新总是可见以外,有三种情况:
1 版本未提交,不可见;
2 版本已提交,但是是在视图创建后提交的,不可见;
3 版本已提交,而且是在视图创建前提交的,可见。
读已提交:事务启动之后,事务内的查询语句获取到的数据是已经提交的最新数据,可能造成幻读,也就是多次读取到的可能不一致。
可重复读:查询会获取在事务启动前就已经提交完成的数据,不过更新的时候会先获取最新的数据版本号,然后再更新,避免丢失其他事务已经提交的数据,并且更新完成之后,
自己成为最新的版本号,所以更新语句之后的查询的数据是更新语句执行完的数据,也就是最新的数据。
索引
原文地址:https://www.cnblogs.com/lwjQAQ/p/12987457.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- VB.NET 仿spy++拖拽图标获取窗体句柄
- 线程生命周期,五大状态转换分析
- 推荐 2 款超牛逼、炫酷、实用的Docker管理工具!
- [业界方案]用Jaeger来学习分布式追踪系统Opentracing
- 记一次FullGC的排查经历--从日志到业务代码
- [源码分析] OpenTracing之跟踪Redis
- Python 3.8 新功能大揭秘
- SpringBoot Redis简单理解
- SpringBoot前端 —— thymeleaf 简单理解
- MyBatis XML简单理解
- Arraylist 与 LinkedList面试题
- Linux服务器权限管理之sudo高级应用
- java各个时间类总结归纳,最全一篇
- 线程池ThreadPoolExecutor源码分析
- 如何基于SSM框架,快速搭建maven后台项目?