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;
相关推荐
独泪了无痕12 分钟前
MySQL中 JSON 数据类型使用指南
mysql
我是一颗柠檬43 分钟前
【MySQL全面教学】MySQL基础与环境搭建Day1(2026年)
数据库·后端·sql·mysql·database
我是一颗柠檬43 分钟前
【MySQL全面教学】MySQL数据类型详解Day2(2026年)
数据库·后端·sql·mysql·database
小江的记录本1 小时前
【Java并发编程】锁机制:volatile:JMM内存模型、可见性/禁止指令重排、内存屏障、单例模式中的应用(附《思维导图》+《面试高频考点清单》)
java·后端·python·mysql·单例模式·面试·职场和发展
身如柳絮随风扬1 小时前
CentOS 7 搭建 MySQL 主从复制集群:从零到生产级高可用
linux·mysql·centos
数据库小学妹1 小时前
MySQL 性能监控实战:从零搭建 Prometheus + Grafana 监控告警体系(附排查 SOP)
mysql·性能优化·grafana·prometheus·dba
阿坤带你走近大数据2 小时前
mysql从5.7升级到8.0后ONLY_FULL_GROUP_BY是升级后应用报错的第一大原因
数据库·mysql
devilnumber3 小时前
MySQL 部门表:树结构 (自关联) vs 非树结构 (扁平化 / 冗余字段)
数据库·mysql
User_芊芊君子3 小时前
一条命令搞定 mysql_exporter 部署,Shell 脚本把重复配置这件事自动化了
android·mysql·自动化
fengxin_rou3 小时前
【MySQL 三大日志深度解析】:redo log、undo log、binlog 作用与两阶段提交原理
数据库·mysql·日志·redo log