🐧
运维笔记
首页
文章
笔记导航
笔记系列
▾
🐧
Linux 运维基础笔记
7 页
🔧
运维进阶 · 常用服务搭建
8 页
🌐
Web 应用服务 · Nginx
8 页
🚀
Nginx 水平扩展与优化
8 页
🛡️
Linux 进阶 · iptables 防火墙
4 页
🐚
Linux 进阶 · Shell 编程
10 页
🐬
数据库 · MySQL
12 页
📊
监控 · Zabbix + Grafana
3 页
🐳
云原生 · Docker
9 页
🌿
云原生 · Git
5 页
归档
标签
搜索
关于
首页
/
全部文章
/ 笔记导航
数据库 · MySQL
MySQL 学习笔记:SQL 基础与多表查询、事务、索引与 SQL 优化、锁与 InnoDB 引擎,以及日志、主从复制和读写分离。
12 个分页
151 个小节
📖 按学习顺序排列
1
MySQL 建库建表与单表查询
先用 docker 把 MySQL 跑起来,再把 DDL 建库建表、DML 增删改、DQL 单表查询这三套 SQL 命令从头过一遍。
一、概述和连接库
二、SQL-DDL
1. 操作库
2. 操作表
3. 数据类型
4. 修改/删除表的字段-alter
三、SQL-DML
1. 插入
2. 修改和删除
四、SQL-DQL
1. 基础语法&准备数据
2. 条件查询
3. 聚合函数
4. 分组查询
5. 排序查询
6. 分页查询
7. 执行顺序&小结
2
MySQL 权限、函数与约束
DCL 管用户和权限,函数把查询结果加工一下,约束则是在表结构上加规矩,这一页把三块一起收掉。
一、SQL-DCL
1. 用户管理
2. 权限控制
二、函数
1. 字符串函数
2. 数值函数
3. 日期函数
4. 流程函数
三、约束
1. 演示
2. 外键约束
3. 外键删除更新行为
3
MySQL 多表查询
从多对多、一对一的关系设计讲到内连接、外连接、自连接、联合查询和子查询,最后用十几道题把多表查询练一遍。
一、多表关系和数据准备
1. 多对多
2. 一对一
3. 多表查询和笛卡尔积
二、内连接
三、外连接
四、自连接
五、联合查询
六、子查询
1. 标量子查询
2. 列子查询
3. 行子查询
4. 表子查询
七、练习题
八、小结
4
MySQL 事务与隔离级别
事务要么全成功要么全失败,这一页把它的操作、ACID 四大特性,以及脏读、不可重复读、幻读和四个隔离级别讲清楚。
一、操作演示
1. 准备数据
2. 改变事务提交方式
3. 不改变事务的提交方式
4. 四大特性 ACID
二、事务并发问题
1. 脏读
2. 不可重复读
3. 幻读
三、事务隔离级别
四、收个尾
5
MySQL 存储引擎与 Linux 安装
MySQL 的四层体系结构和三种常见存储引擎的区别,以及在 Ubuntu 上用 deb 包离线装一套 MySQL 9.7 的完整过程。
一、存储引擎(了解)
1. 体系结构和引擎简介
2. InnoDB、MyISAM、Memory 对比
二、Linux 安装 MySQL
1. 传包、看内存、解压
2. 用 dpkg 装
3. 初始化配置
4. 远程登录
6
MySQL 索引结构与执行计划分析
索引为什么快、聚集索引和二级索引是什么关系、回表到底回的是哪张表,以及怎么用慢查询日志和 EXPLAIN 看出问题出在哪里。
三、索引(重点)
1. 概述和结构
2. 索引分类
3. 语法和查询过程
四、SQL 性能分析
4.1 先看执行频次
4.2 慢查询日志
4.3 show profiles
4.4 EXPLAIN
5. 使用规则(一):最左前缀和几种失效
7
MySQL 索引使用规则与 SQL 优化
多个索引打架时怎么用 SQL 提示指定、覆盖索引和前缀索引怎么建,以及 insert、order by、group by、limit、count、update 各自该怎么优化。
五、索引的使用规则(续)
1. SQL 提示
2. 覆盖索引和回表
3. 前缀索引
4. 单列索引和联合索引
5. 设计原则
六、SQL 优化
1. 插入数据
2. 主键优化
3. order by 优化
4. group by 优化
5. limit 优化
6. count 函数优化
7. update 优化(避免行锁升级为表锁)
8. 小结
8
MySQL 锁机制与加锁实操
MySQL 里三层锁各管什么:全局锁备份怎么用、表锁和 MDL 怎么互相挡、意向锁为什么存在,以及行锁、间隙锁、临键锁到底锁住了哪些索引记录。
一、全局锁
1. 完整备份流程(要开两个会话)
2. 全局锁的问题,以及更推荐的备份方式
3. 为什么备份文件直接落到了宿主机上(而不是容器里)
二、表级锁
1. 表锁(主动加)
2. 元数据锁 MDL(被动加)
3. 意向锁
三、行级锁
1. 行锁
2. 间隙锁与临键锁
四、小结
9
InnoDB 存储引擎与事务原理
InnoDB 的表空间从段到页怎么分层、内存和磁盘里各有哪些结构、redo log 和 undo log 分别保什么,以及 MVCC 靠隐藏字段、版本链和 ReadView 怎么实现快照读。
一、逻辑存储结构
二、架构
1. 内存结构
2. 磁盘结构
3. 后台线程
三、事务原理
1. 介绍
2. redolog 和 undo log
四、MVCC
1. 基本概念
2. 隐藏字段
3. undo log 版本链和 readview 介绍
4. 原理分析(RC 隔离级别——读已提交)
5. 原理分析(RR 隔离级别——可重复读)
6. 总结
10
MySQL 常用管理工具与备份恢复
MySQL 那四个系统库分别存什么、mysql 和 mysqladmin 这些自带工具怎么用,以及 mysqldump 备份、mysqlimport 和 source 恢复的完整流程。
一、系统数据库介绍
二、常用工具 1
1. mysql
2. mysqladmin
3. mysqlbinlog(运维篇会详写)
4. mysqlshow
三、常用工具 2
1. mysqldump 数据备份
2. 数据备份 操作演示
3. mysqlimport 数据导入
四、小结
11
MySQL 四种日志实战
错误日志、二进制日志、通用查询日志、慢查询日志分别记什么、在哪儿、怎么开怎么关,以及 mysqlbinlog 拆 binlog 的过程。
一、错误日志
1. 文件和配置
2. 看日志报错
二、二进制日志
1. 文件和位置
2. 日志格式
3. 删除日志
三、通用查询日志
四、慢查询日志
1. 配置并准备数据
2. 怎么导入 txt 备份
3. 日志输出演示
12
MySQL 主从复制与读写分离
主从复制的原理和 binlog 坐标怎么取、两台机器上主库从库各配什么,加上我踩过的坑和用 MyCat 做读写分离的思路。
一、概述和原理
二、主库配置
1. 初始化配置
2. 主库配置和高版本命令
三、从库配置
1. 从库参数和启动复制
2. 查看复制状态和报错
四、主从配置排障
五、测试方法和小结
六、读写分离
1. 一主一从
2. 一主一从的准备
3. 一主一从的读写分离