想象一下:当你登录微信看到好友列表,在淘宝浏览购买记录,或在豆瓣查看电影评分时——所有这些信息,都在某个数据库中静静存储着。而全球超过70% 的这类数据,都储存在同一种数据库系统中:MySQL。
“MySQL不是最强大的数据库,但它是用最广泛的那个——就像英语不是最优美的语言,但它是全球最通用的交流工具。”
MySQL是一种开源的关系型数据库管理系统(RDBMS),使用SQL(结构化查询语言)进行数据管理。
关系型:数据以表的形式组织,表之间可以建立关联
开源:完全免费,源代码公开,由全球开发者共同维护
客户端-服务器架构:通过客户端程序访问远程或本地的MySQL服务器
跨平台:支持Windows、Linux、macOS等主流操作系统
1995年:瑞典公司MySQL AB创立,第一版发布 2000年:开源发布,开始快速发展 2008年:被Sun Microsystems以10亿美元收购 2010年:Oracle收购Sun,MySQL成为Oracle旗下产品 2010年至今:持续更新,最新版本为MySQL 8.0
应用程序 → 连接器 → 查询缓存 → 分析器 → 优化器 → 执行器
↓
存储引擎层:InnoDB / MyISAM / Memory → 磁盘文件系统
管理所有客户端连接,避免频繁创建销毁连接的开销。
# 典型连接示例(PHP)
$conn = new mysqli("localhost", "username", "password", "database");
接收SQL命令,返回执行结果。支持:
数据定义语言:CREATE、ALTER、DROP
数据操作语言:SELECT、INSERT、UPDATE、DELETE
数据控制语言:GRANT、REVOKE
事务控制语言:COMMIT、ROLLBACK
智能重写查询,选择最高效的执行路径。
-- 用户写的查询 SELECT * FROM users WHERE age > 20 AND city = '北京'; -- 优化器可能: -- 1. 先使用city索引过滤,再筛选age -- 2. 或反之,基于数据分布统计自动选择
MySQL的模块化设计精髓,支持多种存储引擎:
| 存储引擎 | 主要特点 | 适用场景 |
|---|---|---|
| InnoDB(默认) | 支持事务、行级锁、外键 | 需要ACID的事务型应用 |
| MyISAM | 表级锁、全文索引 | 读多写少的查询密集型应用 |
| Memory | 数据存在内存中 | 临时表、缓存数据 |
| Archive | 高压缩比,只支持插入查询 | 日志、历史数据归档 |
实际应用场景:
用户数据管理