架构与数据类型
安装与连接
Tip
生产环境务必为应用创建独立账号并授予最小权限,不要用 root 直连:
整体架构
MySQL 分为 Server 层与存储引擎层:
InnoDB 的关键后台结构:
- Buffer Pool:内存中的数据页缓存,读写的主要战场,命中率决定性能。
- redo log(WAL):顺序写、循环用,保证崩溃持久性。
- undo log:保存旧版本,支撑回滚与 MVCC。
- binlog:Server 层逻辑日志,用于主从复制与数据恢复。
Warning
修改数据时 InnoDB 是「先写 redo log(预写),后刷数据页」——这就是 WAL(Write-Ahead Logging)。理解它才能明白为什么数据库能既保证持久性又保持高吞吐。
常用数据类型
整数
BIGINT UNSIGNED 可作自增主键,别用 INT 承担可能增长的业务量。
字符串
CHAR(n):定长,适合固定长度(如国家码)。VARCHAR(n):变长,最常用;n建议不超过必要长度。TEXT/LONGTEXT:大文本,避免放进频繁查询的表。- 字符集统一
utf8mb4,排序规则推荐utf8mb4_0900_ai_ci(MySQL 8)。
时间
其他
DECIMAL(p,s):精确小数,金额必用。JSON:原生 JSON 类型,可建虚拟列索引。ENUM:枚举,省空间但改值需 DDL,谨慎使用。
Tip
AUTO_INCREMENT 在主从或多主架构下可能冲突;分库分表场景应改用雪花 ID 或号段模式生成主键。
小结
- MySQL = Server 层(连接、解析、优化、执行)+ 可插拔存储引擎层(InnoDB)。
- InnoDB 通过 Buffer Pool、redo/undo log 实现高性能与崩溃恢复。
- 类型选择遵循「精确、够用、有默认值」:金额
DECIMAL、字符集utf8mb4、时间统一约定时区。