MySQL数据库高级特性

一、核心约束(记住区别)

约束类型 作用 特点
主键(PRIMARY KEY) 唯一标识一行 唯一、非空、一个表只能有一个
外键(FOREIGN KEY) 表间关联 引用另一表的主键,保证一致性
索引(INDEX) 加速查询 可重复、可多列、可唯一
CHECK 约束 列值条件校验 MySQL 8.0.16+ 支持

✅ 口诀:主键唯一非空,外键引用主键,索引加速查询,Check 把关数据


二、索引(重点中的重点)

1. 按数据结构分

类型 特点 场景
B+Tree 范围查询快 大多数查询
Hash 等值查询极快 精确匹配
Fulltext 全文检索 文章、搜索

2. 按物理存储分

  • 聚簇索引:数据按主键排序存储,一个表一个

  • 二级索引:存储主键值,需回表

3. 按字段个数分

  • 单列索引

  • 联合索引:最左前缀原则(必须从左到右使用)

✅ 口诀:B+树最常见,Hash精确快,全文搜文本,聚簇主键排


三、事务(ACID 必背)

特性 含义
原子性 要么全成功,要么全失败
一致性 事务前后数据完整
隔离性 事务间互不干扰
持久性 提交后永久保存

隔离级别(从低到高)

级别 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ(默认)
SERIALIZABLE

✅ 口诀:读未提交全乱,读已提交防脏,可重复读防两次,串行化最安全


四、存储过程 vs 触发器

对比项 存储过程 触发器
调用方式 手动 CALL 自动触发
触发事件 INSERT / UPDATE / DELETE
使用场景 复杂逻辑封装 自动化维护、日志、校验

✅ 口诀:过程手动调,触发器自动跑


五、锁(理解即可)

分类 类型 特点
粒度 表锁 锁整个表,并发差
粒度 行锁 锁一行,并发好(InnoDB)
粒度 间隙锁 防幻读
性质 共享锁(读锁) 可并发读
性质 排它锁(写锁) 独占写

✅ 口诀:表锁慢,行锁快,间隙锁防幻读,共享读,排它写


六、存储引擎(重点对比)

引擎 事务 锁粒度 适用场景
InnoDB(默认) 行锁 高并发、写多
MyISAM 表锁 读多写少
Memory 表锁 临时数据、缓存

✅ 口诀:InnoDB 全都要,MyISAM 只读快,Memory 重启丢


七、日志(了解即可)

日志类型 作用
慢日志 记录慢 SQL,用于优化
重做日志(Redo Log) 保证事务持久性,崩溃恢复

✅ 口诀:慢日志抓慢 SQL,重做日志保数据


八、并发问题(高频面试)

问题 描述
更新丢失 后提交覆盖前提交
脏读 读到未提交的数据
不可重复读 同一事务两次读结果不同
幻读 新增/删除导致行数变化

✅ 口诀:丢覆脏未提,两次读不一,幻读行数变


九、常用命令速查

sql

复制代码
-- 索引
CREATE INDEX idx_name ON table(col);
DROP INDEX idx_name ON table;

-- 事务
START TRANSACTION;
COMMIT;
ROLLBACK;

-- 存储过程
CALL proc_name();

-- 触发器(自动执行)
CREATE TRIGGER trigger_name BEFORE INSERT ON table ...

-- 查看索引
SHOW INDEX FROM table;

-- 查看引擎
SHOW ENGINES;
相关推荐
左直拳2 小时前
mysql分区表自动归档
mysql·分区表·分区表归档
haven-8523 小时前
MySQL事务ACID、隔离级别、MVCC、幻读解决
数据库·mysql
加加and减减5 小时前
Docker真实安装mysql8教程并优化配置
运维·mysql·docker·容器
程序猿乐锅5 小时前
【MySQL | 第九篇】MySQL 存储过程
数据库·mysql
王小王-1236 小时前
基于深度学习的个性化音乐推荐系统的设计与开发
人工智能·深度学习·mysql·vue·推荐算法·个性化音乐推荐系统·音乐预测
xuefuhe6 小时前
MySQL8.4 tar.xz安装
mysql
五阿哥永琪7 小时前
正则表达式
数据库·mysql·正则表达式
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-06-13
数据库·mysql
sulikey8 小时前
数据库中等值连接与自然连接的区别。为什么不建议使用自然连接?
数据库·sql·mysql·等值连接·自然连接
周末也要写八哥9 小时前
数据库安装 | MySQL 8.0.32安装教程及网盘下载地址
数据库·mysql