mcpField
M
mysql

mysql

github.com/claude-dev-suite数据与数据库4675 次安装5 天前更新
代码仓库

关于 mysql

面向 MySQL 的参考技能,涵盖表结构、查询、故障排查和运维实践,并说明与 PostgreSQL 的差异及应改用其他数据库技能的情况。

主要功能

  1. 01表定义示例
  2. 02常见查询模式
  3. 03MySQL 与 PostgreSQL 差异
  4. 04查询反模式指引
  5. 05故障排查参考

适用场景

  1. 01设计 MySQL 表和索引
  2. 02编写分页与连接查询
  3. 03诊断慢查询或死锁
  4. 04选择适用的数据库技能

MCP 相关

README 提示使用 `mcp__documentation__fetch_docs` 并指定 technology 为 `mysql`,获取完整文档。

安装

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

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill mysql

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

附带文件quick-ref/indexes.mdquick-ref/queries.md

详细介绍

MySQL 核心知识

深入了解:使用 mcp__documentation__fetch_docs,并将 technology 设为 mysql,以获取全面文档。

表定义

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    is_active BOOLEAN DEFAULT TRUE,
    INDEX idx_email (email),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

常见查询

-- Pagination
SELECT * FROM users
WHERE is_active = TRUE
ORDER BY created_at DESC
LIMIT 20 OFFSET 0;

-- Join
SELECT u.*, COUNT(p.id) as post_count
FROM users u
LEFT JOIN posts p ON p.user_id = u.id
GROUP BY u.id;

-- Upsert
INSERT INTO users (email, name)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE name = VALUES(name);

与 PostgreSQL 的主要区别

特性MySQLPostgreSQL
自动 IDAUTO_INCREMENTSERIAL
布尔值TINYINT(1)BOOLEAN
插入或更新ON DUPLICATE KEYON CONFLICT
JSONJSONJSONB(可建立索引)

何时不应使用此技能

  • PostgreSQL 专属功能 - 对于 JSONB、数组和窗口函数,请使用 postgresql 技能
  • NoSQL 操作 - 对于文档型/键值存储,请使用 mongodb 或 redis 技能
  • Oracle 数据库 - 对于 Oracle 专属功能,请使用 oracle 技能
  • SQL Server - 对于 T-SQL 和 SQL Server 功能,请使用 sqlserver 技能
  • ORM 抽象 - 请使用特定框架的技能(Prisma、TypeORM、Sequelize)

反模式

反模式问题解决方案
在生产环境中使用 SELECT *传输不必要的数据,影响性能明确指定所需列
UPDATE/DELETE 缺少 WHERE意外修改所有行始终包含 WHERE 子句
JOIN/WHERE 列缺少索引全表扫描,查询缓慢为频繁查询的列添加索引
对事务数据使用 MyISAM不支持事务,采用表级锁使用 InnoDB 引擎
LIKE '%pattern'无法使用索引,会进行全表扫描使用 LIKE 'pattern%' 或全文搜索
大型表缺少 LIMIT可能导致应用崩溃始终对结果分页
对频繁变化的值使用 ENUM添加值需要执行 ALTER TABLE改用查找表
缺少外键数据完整性问题定义正确的 FK 约束
N+1 查询问题循环中每行执行一次查询使用 JOIN 或批量查询
未使用预处理语句存在 SQL 注入风险,性能较差使用参数化查询

快速故障排除

问题诊断修复
查询缓慢EXPLAIN SELECT ...添加索引、重写查询、分析执行计划
CPU 使用率高使用 SHOW PROCESSLIST 查找慢查询优化耗时最多的查询,添加索引
达到连接数上限SHOW STATUS LIKE 'Threads_connected'增加 max_connections,使用连接池
锁等待超时检查 SHOW ENGINE INNODB STATUS缩短事务时间,优化查询
磁盘空间已满SELECT table_schema, SUM(data_length+index_length) FROM information_schema.tables GROUP BY 1归档旧数据,优化表
复制延迟SHOW SLAVE STATUS增加资源,调整 binlog 设置
表损坏CHECK TABLE table_name运行 REPAIR TABLE 或从备份恢复
死锁检查错误日志和 SHOW ENGINE INNODB STATUS缩小事务范围,按相同顺序访问表

参考文档

评论

支持 Markdown