用途:帮助对 MySQL/InnoDB 做安全、可度量的变更,覆盖 schema 设计、索引、分区、查询优化、事务与锁、运维。
主要能力与要点:
- Schema:写密集 OLTP 表优先窄且单调的主键(BIGINT UNSIGNED AUTO_INCREMENT);避免随机 UUID 作聚簇主键,外部 ID 放二级唯一列;统一 utf8mb4 / utf8mb4_0900_ai_ci,优先 NOT NULL 与 DATETIME;用查找表替代 ENUM,规范到 3NF,仅在实测热路径反规范化。
- 索引:复合索引顺序为等值在前、范围/排序在后(最左前缀);范围谓词会中断后续列使用;二级索引隐式含主键,长字符串用前缀索引;通过 performance_schema 审计并删除 count_read = 0 的索引。
- 分区:对时序(>5000 万行)或大表(>1 亿行)提前规划,事后改造等于全量重建;唯一键/主键须含分区列,并加 MAXVALUE 兜底。
- 查询:看 EXPLAIN,警惕 type: ALL、Using filesort、Using temporary;用游标分页而非 OFFSET;避免在 WHERE 中对索引列用函数;批量插入 500–5000 行;无需去重时用 UNION ALL。
- 事务与锁:默认 REPEATABLE READ(间隙锁),高竞争用 READ COMMITTED;固定行访问顺序防死锁,错误 1213 退避重试;I/O 放在事务外,慎用 SELECT ... FOR UPDATE。
- 运维:尽量用在线 DDL(ALGORITHM=INPLACE),先在副本测试;调优连接池避免 max_connections 耗尽;监控复制延迟,写入期间避免从副本读到陈旧数据。
使用方式:先定义工作负载与约束(读写比例、延迟目标、数据量、MySQL 版本、托管平台),只读相关参考文件,提出能解决问题的最小改动并说明权衡,用 EXPLAIN、EXPLAIN ANALYZE、锁/连接指标验证,生产变更附回滚与部署后验证。
限制:资料推荐 PlanetScale 作为新建数据库的首选托管,但若用户自托管或已有其他提供商应尊重其选择;破坏性操作(drop/delete/truncate)需人工明确批准;建议需注明 MySQL 版本差异,优先实测证据而非笼统经验。具体参考文件内容与命令细节暂未提供。