mysql 知识点(java)

一、MySQL 基础(必会)

1️⃣ MySQL 逻辑架构

Client
 ↓
Server 层(连接器、分析器、优化器、执行器)
 ↓
存储引擎层(InnoDB / MyISAM)
 ↓
文件系统

InnoDB 是默认存储引擎


2️⃣ 存储引擎对比(高频)

引擎 事务 外键 崩溃恢复
InnoDB 行锁
MyISAM 表锁

99% 场景用 InnoDB


二、索引(面试之王 ⭐⭐⭐⭐⭐)

1️⃣ 索引作用

  • 加快查询
  • 约束数据(唯一、主键)

2️⃣ 索引类型

类型 说明
主键索引 PRIMARY KEY
唯一索引 UNIQUE
普通索引 INDEX
联合索引 (a,b,c)
全文索引 FULLTEXT
全文索引的作用:让 MySQL 像搜索引擎一样,快速查“包含某个词的内容”。

3️⃣ InnoDB 索引结构(B+Tree)

B+Tree 特点

  • 数据存在叶子节点
  • 叶子节点链表相连
  • 高度低(3~4 层)

4️⃣ 聚簇索引 vs 非聚簇索引

对比 聚簇索引 非聚簇索引
存储 数据 + 索引 索引 + 主键
数量 一个 多个
查询 回表

InnoDB 主键 = 聚簇索引


5️⃣ 最左前缀原则(必问)

(a, b, c)

✅ 能用索引:

  • a
  • a,b
  • a,b,c

❌ 不能用:

  • b
  • c
  • b,c

6️⃣ 索引失效(高频)

❌ 使用函数
❌ 隐式转换
❌ like ‘%abc’
❌ or 条件不全
❌ != / <>
❌ is null / is not null(视版本)


三、事务(ACID)

特性 说明
Atomicity 原子性
Consistency 一致性
Isolation 隔离性
Durability 持久性

四、事务隔离级别(必背)

隔离级别 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE

MySQL 默认:REPEATABLE READ

在这里插入图片描述
在这里插入图片描述


五、MVCC(重点)

多版本并发控制

✅ 解决:

  • 读写不阻塞
  • 快照读

核心:

  • undo log
  • read view
  • 隐藏字段(DB_TRX_ID)

六、锁机制(高频)

1️⃣ 锁类型

说明
行锁 InnoDB
表锁 MyISAM
间隙锁 防止幻读
临键锁 行锁 + 间隙锁

2️⃣ 行锁升级条件

  • 无索引
  • 索引失效
  • 范围更新

七、日志(面试加分)

日志 作用
redo log 崩溃恢复
undo log 回滚 / MVCC
binlog 主从复制

WAL:先写日志,再写磁盘

这张图片列出了 MySQL 中三种核心日志及其主要作用。这三者是理解 MySQL 事务、崩溃恢复和主从复制机制的关键,也是面试中的高频考点。

下面为你详细解析这三种日志的作用及面试加分点:

1. redo log (重做日志)

  • 作用崩溃恢复 (Crash Recovery)
  • 详细解释
    • MySQL 为了追求高性能,采用了 WAL (Write-Ahead Logging,预写日志) 机制,即数据先写入内存(Buffer Pool),再异步刷盘。
    • 如果在数据还没刷盘时数据库突然崩溃了,重启后如何恢复未刷盘的数据?
    • redo log 记录了数据的物理变化。即使数据页丢失,只要 redo log 还在,就能根据这些记录重新把数据“重做”出来,保证已提交的事务不丢失。
    • 特点:物理日志,循环写,保证事务持久性(Durability)。

2. undo log (回滚日志)

  • 作用回滚 / MVCC (多版本并发控制)
  • 详细解释
    • 回滚 (Rollback):当事务执行失败或执行 ROLLBACK 命令时,需要将数据恢复到事务开始之前的状态。undo log 记录了数据被修改前的旧值,利用它可以将数据“撤销”回去。
    • MVCC (Multi-Version Concurrency Control):这是实现读不加锁、读写不冲突的关键。当一个事务需要读取数据时,如果该数据正在被其他事务修改,MySQL 会通过 undo log 找到该数据之前的某个历史版本(快照),提供给当前事务读取,从而实现非阻塞读。
    • 特点:逻辑日志,记录反向操作。

3. binlog (二进制日志)

  • 作用主从复制 / 数据恢复
  • 详细解释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值