讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql数据库规范是什么_mysql设计核心原则

风磊大大_6162

风磊大大_6162

发布时间:2026-02-01 11:02:52

|

437人浏览过

|

来源于php中文网

原创

MySQL数据库规范是避免线上故障的实践指南:主键须用自增BIGINT,禁用UUID或业务字段;字段类型要精准(如TINYINT存状态、DECIMAL存金额);索引遵循最左前缀且总数≤5;字符集必须utf8mb4,引擎强制InnoDB,禁用外键。

mysql数据库规范是什么_mysql设计核心原则

MySQL 数据库规范不是一堆教条,而是用血泪换来的“少踩坑指南”——它直接决定你上线后查不出数据、改不动字段、扛不住流量时,是连夜改代码,还是喝着咖啡等告警。


主键怎么设?别让 id 成为性能杀手

绝大多数表都该有 id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,但关键在“为什么必须是自增整数”:InnoDB 的聚簇索引按主键物理排序,随机主键(比如 UUID 或业务订单号)会导致频繁页分裂、磁盘随机写飙升。实测大表插入吞吐量可能跌 3–5 倍。

  • 禁止用 VARCHAR(32) 存 UUID 当主键(除非你明确做了 UUID ordered 变种)
  • 禁止把 user_id 设为主键——它不自增,且可能被更新;应建 UNIQUE KEY 并加索引
  • 如果真需要逻辑唯一标识(如订单号),单独加 UNIQUE INDEX,别动主键

字段类型选错,空间和性能双崩

用 TINYINT UNSIGNED 存状态(0/1/2/3),比用 ENUM 或 VARCHAR(10) 省 3 字节/行,1000 万行就省下近 30MB 内存+索引空间,且排序、比较更快。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • DATETIME 优先于 TIMESTAMP:后者依赖时区、范围小(1970–2038)、自动更新行为易引发意外
  • 金额一律用 DECIMAL(16,2),不用 FLOAT——浮点误差在结算场景里就是资损
  • TEXT 必须拆表:它不进 InnoDB 行内存储,会拖慢全表扫描;评论、日志类字段,单独建 t_order_comment 关联
  • IP 地址用 INT UNSIGNED + INET_ATON()/INET_NTOA(),比 VARCHAR(15) 节省空间、支持范围查询

索引不是越多越好,idx_user_status_created 这种命名背后有陷阱

复合索引 INDEX idx_user_status_created (user_id, status, created_at) 能加速 WHERE user_id = ? AND status = ? ORDER BY created_at,但对 WHERE status = ? 完全无效——因为没满足最左前缀。

  • 单表索引总数 ≤ 5 个:每多一个索引,INSERT/UPDATE 就多一次 B+ 树维护开销
  • 字段顺序决定能覆盖哪些查询:高频过滤字段放最左,ORDER BY 字段放最后(如需避免 filesort)
  • 避免对低选择性字段(如 gender TINYINT 只有 0/1)单独建索引,基本不起作用
  • 索引名必须见名知意:idx_order_user_id 比 idx_1 强一万倍;唯一索引用 uniq_order_no

字符集和引擎选错,上线即事故

用 utf8 存 emoji?会报错或截断。MySQL 的 utf8 实际是 utf8mb3,最多存 3 字节字符;真正兼容 emoji 的是 utf8mb4,建库建表必须显式指定。

  • 所有表强制 ENGINE=InnoDB:MyISAM 不支持事务、行锁、崩溃恢复,现代业务根本不能用
  • 建表语句必须带 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci,否则继承库默认(可能是过时的 utf8)
  • 所有字段加 COMMENT,哪怕只是 COMMENT '1:启用,2:禁用'——三个月后你绝对想感谢当初写注释的自己
  • 禁止外键:FOREIGN KEY 在高并发下易死锁,且业务层做校验更灵活;靠开发约定 + 唯一索引约束替代

真正难的从来不是“知道要做什么”,而是每次建表时,是否愿意花 30 秒确认 id 类型、字符集、注释和索引字段顺序——这些地方不卡壳,后面半年都不会为慢查询和数据不一致掉头发。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2113

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1299

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

755

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2832

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4728

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1079

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4991

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4442

2023.08.14

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

100

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 180人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 287人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn