跳到主要内容

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