【学习总结】MySQL篇

MySql

事务ACID

原子性

事务是不可分割的最小单元,一个事务的若干sql操作。要么统一成功,要么统一失败。(redoLog)

持久性

数据库的数据在宕机,丢失数据的情况下。可以回滚数据,这由mysql的日志完成(redoLog)

隔离性

两个事务的操作,应该互不干扰。一个事务,不会对另一个事务照成干扰。(锁)

一致性

一个事务执行前后并不会破坏数据库的一致性。比如一张表的name字段是唯一的,事务执行后,并不对name字段的唯一性造成破坏。(undoLog)

RedoLog和BinLog的区别

使用情景

binlog 主从复制,容灾备份

redolog 维持事务的一致性ACID

记录形式

binlog 有三种格式的日志保存log

redolog 纯物理记录日志

记录时机

binlog 每条sql都会记录

redolog 只有事务执行完毕才会保存日志

MYSQL锁的算法

行锁

Record Lock

单个行上锁

GapLock

间隙锁,锁定一个范围。但不包括记录本身。

Next-Key Lock

范围锁 相当于 Record Lock + GapLock(包含记录本身)

MySQL锁的问题

脏读

事务A读了两次,事务B的还没提交,结果事务A读的两次不一致。

不可重复读

事务A两次读取的途中,事务B修改了一行数据。

幻读

事务A两次读取的途中,事务B新增了一行数据。

MVCC

MVCC多版本并发控制,是为了解决事务操作中并发安全性问题而诞生的一种技术。

MVCC 主要解决了三个问题

1、采用乐观锁的机制,降低死锁概率。

2、解决一致性读的问题。事务开始到结束都读的同一份数据。

3、解决读写并发阻塞问题。提升数据并发处理能力。

事务的隔离级别

读已提交

通过Record Lock算法实现了行锁,而READ COMMITTED允许读取提交数据,所以不存在脏读问题,但存在不可重复读问题。

读未提交

通过Record Lock算法实现了行锁,但READ UNCOMMITTED允许读取未提交数据,所以存在脏读问题

可重复读

使用Next-Key Lock算法实现了行锁,并且不允许读取已提交的数据,所以解决了不可重复读的问题。

另外,该算法包含了间隙锁,会锁定一个范围,因此也解决了幻读的问题

串行化

对每个SELECT语句后自动加上LOCK IN SHARE MODE,即为每个读取操作加一个共享锁。因此在这个

事务隔离级别下,读占用了锁,对一致性的非锁定读不再予以支持。

效果

MySQL的优化

架构设计层面的优化

主从复制
读写分离
分库分表
引入缓存

SQL优化

通过慢查询日志定位SQL语句
通过explain语句分析SQL语句
改SQL

例子:https://www.bilibili.com/video/BV1fM4m127tb/?spm_id_from=333.1007.top_right_bar_window_history.content.click

思想:面对大批量数据排序。只排序id再查全部数据,比全部数据一股脑排序性能更好。

因为:mysql分为服务层和存储引擎层。如果把所有数据放在mysql服务层会导致mysql压力过大。把单独的id放在服务层排序。压力会小很多。

相关推荐
Hello.Reader12 分钟前
RedisJSON 路径语法深度解析与实战
数据库·redis·缓存
TDengine (老段)43 分钟前
TDengine 使用最佳实践(2)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
设计师小聂!4 小时前
Linux系统中部署Redis详解
linux·运维·数据库·redis
kfepiza4 小时前
Debian-10编译安装Mysql-5.7.44 笔记250706
linux·数据库·笔记·mysql·debian·bash
Touper.4 小时前
Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)
java·数据库·redis
不剪发的Tony老师4 小时前
phpMyAdmin:一款经典的MySQL在线管理工具又回来了
数据库·mysql·phpmyadmin
极限实验室4 小时前
TDBC 2025 可信数据库发展大会,极限科技邀您来赴约!
数据库
西西西仓鼠4 小时前
python学习打卡:DAY 40 训练和测试的规范写法
学习
Magnetic_h4 小时前
【iOS】方法与消息底层分析
笔记·学习·macos·ios·objective-c·cocoa
今天背单词了吗9804 小时前
算法学习笔记:19.牛顿迭代法——从原理到实战,涵盖 LeetCode 与考研 408 例题
笔记·学习·算法·牛顿迭代法