MySQL 入门教程 · 第五阶段:性能优化与事务
本阶段你将迈向“准专业人士”。我们会讲解 索引、事务、锁、权限管理 等实际工作中必须掌握的内容。依旧用通俗易懂的小白友好教学风格。
📌 1. 什么是性能优化?
你可以把数据库想成一个“仓库”:
- 索引 = 仓库的目录
- SQL 语句 = 告诉仓库管理员你想找什么
- 优化 = 让仓库管理员更快找到东西
性能优化的核心目标:让数据查得更快、写得更稳。
📘 2. 索引(Index)—— 让查询像查字典一样快
2.1 索引的作用
如果一个表里有几十万、几百万行记录,正常查询就像从头到尾一本一本翻书,速度会非常慢。 而 索引就是一个超级目录,直接引导到你需要的数据位置。
2.2 如何创建索引
-- 给 name 字段创建普通索引
CREATE INDEX idx_user_name ON users(name);
2.3 怎样查看有哪些索引
SHOW INDEX FROM users;
2.4 建索引的常见“黄金法则”
- 对 经常用于查询条件(WHERE) 的字段建索引
- 对 经常用于排序(ORDER BY) 的字段建索引
- 对 经常用于连接(JOIN) 的字段建索引
2.5 不要乱建索引
索引不是越多越好:
- 索引多会让写入变慢
- 占用更多磁盘
总结:索引适量最好,用对地方速度飞起。
📘 3. 事务(Transaction)—— 数据的安全保护罩
所谓 事务,就是“一组必须一起成功或一起失败的操作”。
例如:转账
- A:扣 100
- B:加 100
这两个操作要么都成功,要么都失败,否则钱就丢了。
3.1 开启事务
START TRANSACTION;
3.2 提交事务(保存)
COMMIT;
3.3 回滚事务(撤销)
ROLLBACK;
3.4 事务 ACID 四要素(简单理解版)
- A(原子性):要么全成功,要么全失败
- C(一致性):结果必须正确
- I(隔离性):互不干扰
- D(持久性):一旦提交就永久保存
📘 4. 锁(Lock)—— 数据冲突的交通指挥
当多个用户同时访问数据库时,就可能出现:
- 两个人同时编辑同一条数据
- 一个在读,一个在写
为了避免混乱,MySQL 通过 锁 来协调。
4.1 读锁(共享锁)
多个读可以一起读,不影响彼此。
4.2 写锁(排他锁)
只允许一个任务写入,别人只能等。
小白理解:读锁像多人同时看书,写锁像一个人独占书本做笔记。
📘 5. 权限管理 —— 安全从这里开始
在实际项目中,不能把所有权限都给所有人。
5.1 创建用户
CREATE USER 'jack'@'%' IDENTIFIED BY '123456';
5.2 赋予权限
GRANT SELECT, INSERT ON mydb.* TO 'jack'@'%';
5.3 查看权限
SHOW GRANTS FOR 'jack'@'%';
5.4 回收权限
REVOKE INSERT ON mydb.* FROM 'jack'@'%';
📘 6. SQL 优化建议(你马上就能用)
✔ WHERE 尽量使用索引字段
SELECT * FROM users WHERE email = 'a@b.com';
✔ 少用 SELECT *(不需要就别全拿)
SELECT id, name FROM users;
✔ 大量写入时关闭自动提交
SET autocommit = 0;
✔ 优化长 SQL
把复杂 SQL 拆开往往更高效。
🎯 小结:你已经迈入 MySQL 的实际开发技能
学完这个阶段,你已经掌握:
- ✔ 如何让查询更快(索引)
- ✔ 如何保护数据正确性(事务)
- ✔ 如何避免多人冲突(锁)
- ✔ 如何创建安全用户权限
- ✔ 如何写更高效的 SQL