mysql-高级笔记【优化】

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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

四、Explain - 查看执行计划

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值