mcpField
M
mysql

mysql

github.com/pageai-pro数据与数据库33572 次安装18 周前更新
代码仓库

关于 mysql

用于规划和验证安全、可衡量的 MySQL/InnoDB 变更的技能,指导数据库开发者处理模式设计、索引、查询优化、锁定和运维,并重视证据与回滚。

主要功能

  1. 01模式设计建议
  2. 02索引与分区规划
  3. 03查询优化实践
  4. 04事务与锁定建议
  5. 05运维发布与回滚

适用场景

  1. 01设计新的 OLTP 表结构
  2. 02使用 EXPLAIN 排查慢查询
  3. 03安全规划生产数据库变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pageai-pro/ralph-loop --skill mysql

安装后在 Claude Code 中输入/mysql确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
character-sets.md
composite-indexes.md
connection-management.md
covering-indexes.md
data-types.md
deadlocks.md
explain-analysis.md
fulltext-indexes.md
index-maintenance.md
isolation-levels.md
json-column-patterns.md
n-plus-one.md
online-ddl.md
partitioning.md
primary-keys.md
query-optimization-pitfalls.md
replication-lag.md
row-locking-gotchas.md

详细介绍

MySQL

使用此技能进行安全且可衡量的 MySQL/InnoDB 更改。

工作流

  1. 明确工作负载和约束(读写比例、延迟目标、数据量、MySQL 版本、托管平台)。
  2. 只阅读下方各部分链接的相关参考文件。
  3. 提出能够解决问题的最小改动,并说明权衡。
  4. 通过证据进行验证(EXPLAIN、EXPLAIN ANALYZE、锁/连接指标,以及适用于生产环境的上线步骤)。
  5. 对于生产环境更改,提供回滚方案和部署后验证。

Schema 设计

  • 对写入密集型 OLTP 表,优先使用较窄、单调递增的主键(BIGINT UNSIGNED AUTO_INCREMENT)。
  • 避免将随机 UUID 值用作聚簇主键;如果需要外部 ID,请将 UUID 存储在单独的唯一列中。
  • 始终使用 utf8mb4 / utf8mb4_0900_ai_ci。优先使用 NOT NULL,并选择 DATETIME 而非 TIMESTAMP。
  • 使用查找表而非 ENUM。规范化至 3NF;仅针对经测量确认的热点路径进行反规范化。

参考:

索引

  • 复合索引顺序:先等值,再范围/排序(最左前缀规则)。
  • 范围谓词会阻止后续列使用索引。
  • 二级索引会隐式包含主键。对长字符串使用前缀索引。
  • 通过 performance_schema 审查索引——删除 count_read = 0 的索引。

参考:

分区

  • 对时间序列表(>50M 行)或大型表(>100M 行)进行分区。尽早规划——事后改造需要完整重建。
  • 在每个唯一键/主键中包含分区列。始终添加 MAXVALUE 兜底分区。

参考:

查询优化

  • 检查 EXPLAIN——危险信号:type: ALL、Using filesort、Using temporary。
  • 使用游标分页,而非 OFFSET。避免在 WHERE 中对索引列使用函数。
  • 批量插入(500–5000 行)。无需去重时使用 UNION ALL,而非 UNION。

参考:

事务与锁

  • 默认使用 REPEATABLE READ(间隙锁)。在高争用情况下使用 READ COMMITTED。
  • 按一致的顺序访问行可避免死锁。遇到错误 1213 时,采用退避策略重试。
  • 在事务外执行 I/O。谨慎使用 SELECT ... FOR UPDATE。

参考资料:

运维

  • 尽可能使用在线 DDL(ALGORITHM=INPLACE);先在副本上测试。
  • 优化连接池配置,避免负载过高时耗尽 max_connections。
  • 监控复制延迟;写入期间避免从副本读取过时数据。

参考资料:

防护措施

  • 优先依据实测证据,而非一概而论的经验法则。
  • 提供建议时,注明 MySQL 版本特定的行为。
  • 执行破坏性数据操作(删除表、删除数据或清空表)前,先征得用户明确批准。

评论

支持 Markdown