首页 数据库 mysql教程 记录MySQL开发规范

记录MySQL开发规范

Dec 21, 2020 am 09:56 AM
mysql

Mysql视频教程栏目介绍MySQL的开发规范

记录MySQL开发规范

推荐(免费):mysql视频教程

基础规范

  • 使用innodb存储引擎

  • 表字符集使用utf-8

  • 所有表添加注释

  • 单表数据量建议控制在5000W以内

  • 不再数据库中存储图、文件等大数据

  • 禁止在线上做数据库压力测试

  • 禁止测试、开发环境直连数据库

命名规范

  • 库名表名字段名必须有固定的命名长度,12个字符以内

  • 库名、表名、字段名禁止超过32个字符。须见名之意

  • 库名、表名、字段名禁止使用MySQL保留字

  • 临时库、表名必须以tmp为前缀,并以日期为后缀

  • 备份库、表必须以bak为前缀,并以日期为后缀

库、表、字段开发设计规范

  • 禁止使用分区表

  • 拆分大字段和翻身顾问频率低的字段,分离冷热数据

  • 用HASH进散表,表名后缀使进制数,下标从0开始

  • 按日期时间分表需符合YYYY[MM][DD][HH]格式

  • 采用合适的分库分表策略。例如千库十表、十库百表等

  • 尽可能不适用text、blob类型

  • 用decimal代替float和double存储精确浮点数

  • 越简单越好:将字符转换为数字、使用tinyint来代替enum类型

  • 所有字段均为not null

  • 使用unsigned存储非负数

  • int类型固定占有4字节存储

  • 使用timestamp存储时间

  • 使用int unsigned存储ipv4

  • 使用varbinary存储大小写敏感的变长字符串

  • 禁止在数据库中存储明文密码,把密码加密后存储

  • 用好数值类型字段


    类型

    字节

    最小值

    最大值





    tinyint

    1

    -128

    127

    smallint

    2

    -32768

    32767

    mediumint

    3

    -8388608

    8388607

    int

    4

    -2147483648

    2147483647

    bigint

    8

    -9223372036854775808

    9223372036854775807

    如果数值字段没有那么大,就不要用bigint

  • 存储ip最好用int存储而非char(15)

  • 不允许使用enum

  • 避免使用null字段

    null字段很难查询一花,null字段的索引需要额外空间,null字段的复合索引无效。

索引规范

  • 单个表中的索引数量不超过5个

  • 单个索引中的字段数不超过5个

  • 对字符串使用前缀索引,前缀索引长度不超过8个字符

  • 建议优先考虑前缀索引,必要可添加伪列并建立索引

  • 表必须有主键

  • 不使用更新频繁的列作为主键

  • 尽量不选择字符串列作为主键

  • 不使用uuid md5 hash这些作为主键-太离散

  • 默认使非空的唯一键作为主键

  • 建议选择自增或发号器

  • 重要的SQL必须必须被索引,比如update、delete语句的where条件列、order by、group by、distinct的字段

  • 多表join的字段注意

<p>1.区分度最大的字段放在前面<br>2.核SQL优先考虑覆盖索引<br>3.避免冗余和重复索引<br>4.索引要综合评估数据密度和分布以及考虑查询和更新比例<br></p>
登录后复制
  • 索引禁忌

<p>1.不在低基数列上建立索引、例如性别<br>2.不在索引列记性数学运算和函数运算<br></p>
登录后复制
  • 尽量不使用外键

<p>1.外键用来保护参照完整性,可以业务端实现<br>2.对父表和字表的操作会互相影响,降低可用性<br></p>
登录后复制
  • 索引命名

<p>1.非唯一索引必须以 inx_字段1_字段22.唯一索引必须以 uniq_字段1_字段2<br></p>
登录后复制
  • 索引字段的默认值不能为空。null非常影响索引的查询效率。

  • 反复查看和表相关的SQL,符合最左前缀的特点建立索引。多条字段重复的索引,要修改语句条件字段的顺序,为其建立一条联合索引,减少索引数量。

  • 能使用唯一索引就使用唯一索引

  • 研发要经常使用explain,如果发现索引选择性差,必须让他们学会使用hint。

SQL规范

  • SQL语句尽可能简单

  • 事物要简单,整个事物的时间产生过度不要太长

  • 避免使用触发器、函数、存储过程

  • 降低业务耦合度,为sacle out,sharding留有余地

  • 避免在数据库中进行数学运算,mysql不擅长数学运算和逻辑判断

  • 不要用selecy *,查询那几个字段就select那几个字段

  • sql中使用or的改写成in,or的效率没有in的效率高

  • in里面数字的个数建议1000以内

  • limit分页注意效率。limit越大,效率越低。

  • 使用union all替代union

  • 避免使大表join

  • 使用group bu分组、自动排序

  • 对数据的更新要打散后批量更新,不要一次更新太多数据

  • 减少和数据库的交互次数

  • 注意使用性能分析工具

  • SQL语句要求所有研发,SQL关键字全部大写,每个词只允许一个空格

  • SQL语句不可以出现隐式转换

  • 能不用not in就不用

  • 禁止使用前缀是%的like

  • 不使用负向查询,如 not in、not like

  • 禁止在数据库总跑大查询

  • 使预编译语句,只传参数,比传递SQL语句更高效。降低SQL注入。

  • 禁止使order by rand

  • 禁止单条SQL语句同时更新多个表

流程规范

  • 所有的建表操作需要提前告知该表涉及的查询SQL

  • 所有的建表需要确定建立那些索引后才可以建表上线

  • 所有的改表结构、加索引操作都需要涉及到所该表的查询SQL发出来通知DBA等相关人员

  • 在新建表加字段之前,要求研发至少提前3天邮件出来,给dba门评估、优化和审核

  • 批量导入、导出数据必须提前通知DBA协助观察

  • 禁止线上从库执行后端管理和统计类查询

  • 禁止super权限的应用程序账户存在

  • 不再业务高峰期批量更新、查询数据库

以上是记录MySQL开发规范的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MySQL:世界上最受欢迎的数据库的简介 MySQL:世界上最受欢迎的数据库的简介 Apr 12, 2025 am 12:18 AM

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

phpmyadmin怎么打开 phpmyadmin怎么打开 Apr 10, 2025 pm 10:51 PM

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

为什么要使用mysql?利益和优势 为什么要使用mysql?利益和优势 Apr 12, 2025 am 12:17 AM

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

MySQL的位置:数据库和编程 MySQL的位置:数据库和编程 Apr 13, 2025 am 12:18 AM

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

apache怎么连接数据库 apache怎么连接数据库 Apr 13, 2025 pm 01:03 PM

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

docker怎么启动mysql docker怎么启动mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

MySQL的角色:Web应用程序中的数据库 MySQL的角色:Web应用程序中的数据库 Apr 17, 2025 am 12:23 AM

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

centos7如何安装mysql centos7如何安装mysql Apr 14, 2025 pm 08:30 PM

优雅安装 MySQL 的关键在于添加 MySQL 官方仓库。具体步骤如下:下载 MySQL 官方 GPG 密钥,防止钓鱼攻击。添加 MySQL 仓库文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 仓库缓存:yum update安装 MySQL:yum install mysql-server启动 MySQL 服务:systemctl start mysqld设置开机自启动

See all articles