一、MySQL数据库基本概念-事务复习
1、事务理解
一次SQL会话中有多条写操作,这些写操作要吗同时成功,要么同时失败,这样的操作称为事务
举例:将甲银行卡中的钱转到乙账户,同时进行2个写操作,也即甲银行卡扣除转账金额同时乙银行卡增加同样金额,二者要么同时成功要么同时失败
2、事务的4大特性-ACID
| 特性 | 描述 |
|---|---|
| 原子性 | 几条写操作不可分割,要么同时成功,要么同时失败,操作的最小单位 |
| 一致性 | 改变结果是一致的,例如,甲甲给乙转钱,甲扣多少乙就加多少 |
| 隔离性 | 俩个未提交的事务不可以相互影响 |
| 持久性 |
3、隔离级别
| 隔离级别 | 描述 |
|---|---|
| 读未提交 | 所谓读未提交,就是读到其他别人未提交事务的内容,对应问题脏读。 |
| 读已提交 | 读到别人已经提交的内容,但是存在不可重复读的问题 |
| 可重复读 | 为MySQL默认的隔离级别,以前幻读问题,但是后来的版本的innoDB搜索引擎中已经将幻读问题解决 |
| 串行化 | 简单说就是将线性执行,执行完一个执行一个,安全级别最高,但是效率最低 |
注意:隔离级别安全性从上到下逐级提高,但是读未提交和串行化太过极端,在实际应用中根本不能使用
4、事务问题
| 问题 | 描述 |
|---|---|
| 脏读 | 读到别人未提交的数据 |
| 不可重复读 | 一个事务内,读取到其他事务已提交的修改数据导致前后俩次数据情况不一致,叫做不可重复读 |
| 幻读 | 一个事务内多次读取同一条数据不一致,由其他事务插入数据导致 |
二、SQL执行顺序
from -> on -> join -> where ->group by - > 分组函数(例如:sum、count、max、gav) ->having -> select -> disinct - >order by -> linit

本文回顾了MySQL数据库中的事务基本概念,包括事务的四大特性ACID,讨论了不同隔离级别的优缺点。此外,详细介绍了如何使用Explain分析SQL执行计划,解释了Explain各字段的含义,如id、select_type、table、key等,以帮助优化查询性能。最后,文章探讨了索引优化、关联查询优化、排序和分组优化,以及分页查询的性能问题和解决方案。
最低0.47元/天 解锁文章
562

被折叠的 条评论
为什么被折叠?



