• MySQL开发规范


    # MySQL开发规范
    1. 命名规范
    2. 基础规范
    3. 字段设计
    4. 索引规范
    5. SQL设计
    6. 库表设计

    ### 命名规范
    - 数据库名、表名、字段名必须使用小写字母
    - 数据库名、表名、字段名禁止超过32个字符
    - 数据库名、表名、字段名必须见名知意
    - 数据库名、表名、字段名的命名需要与业务、产品等相关联
    - 数据库名、表名、字段名禁止使用MySQL保留字(保留字列表:https://dev.mysql.com/doc/refman/5.6/en/keywords.html)
    - 临时数据库、表的名字必须以tmp作为前缀,如tmp_distributor、tmp_february_promote等
    - 备份数据库、表的名字必须以bak作为前缀,如bak_accounts_users、bak_financeproducts_users等
    - 触发器名必须以tri作为前缀,如tri_experiencesend_6666等
    - 存储过程名字必须以proc作为前缀,如proc_raisetask等
    - 事件名字必须以e作为前缀,如e_distributor等
    - 视图名字必须以v作为前缀,如v_accounts_users等

    ### 基础规范
    - 全部使用innodb存储引擎
    - 表字符集统一使用UTF8字符集
    - 所有字段和表用途都需要添加注释
    - 对同一个表的多次alter操作必须合并为一次操作
    - 数据库的密码强度要求是18位数字字母字符混合密码
    - 禁止在数据库中存储图片、文件等大数据
    - 每张表数据量建议控制在500w以内

    ### 库表设计
    - 禁止使用分区表
    - 尽量将大字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据
    - 采用合适的分库分表策略。例如十库百表等

    ### 字段设计
    - 所有字段均定义为NOT NULL
    - 用decimal代替float和double存储精确却浮点数.例如与金额相关的数据
    - 强烈建议使用tinyint来代替enum类型
    - 尽可能不使用text,blob类型
    - 使用尽可能小的VARCHAR类型字段。VARCHAR(N)中的N表示字符数而非字节数
    - 存储年使用YEAR类型。存储日期使用DATE类型。存储时间(精确到秒)建议使用 TIMESTAMP或者DATETIME类型。

    ### 索引相关规范
    - 索引名必须全部使用小写
    - 表必须有主键,推荐使用数字整形类型id int unsigned作为自增主键
    - 非唯一索引按照“idx_字段名称[_字段名称]”进行命名。例如idx_name
    - 唯一索引按照“uniq_字段名称[_字段名称]”进行命名。例如uniq_name
    - 组合索引建议包含所有字段名,过长的字段可以采用缩写形式
    - 不在选择性低的列上建立索引。例如性别等
    - 选择选择性高的列建立索引.组合索引中,选择性高的列放在最前面
    - 不对过长的varchar字段建立索引。考虑前缀索引,或者添加CRC32或MD5伪列并建立索引
    - 单表求MIN/MAX函数操作的字段上建立索引

    ### SQL设计
    - 禁止使用外键
    - 拆分复杂SQL为多个SQL,避免大事务
    - 获取大量数据时,分批获取数据,每次获取数据少于2000条,结果集应小于1M
    - 避免使用join和子查询。必要时推荐使用join代替子查询
    - 禁止在MySQL的where条件左边对字段进行数学运算和函数运算
    - 禁止单条SQL语句同时更新多个表
    - 禁止使用%前导查询,例如 like '%ABC',会导致SQL语句不走索引
    - 禁止使用负向查询,例如 not in、!=、not like等
    - 避免使用update...limit以及delete...limit语句

  • 相关阅读:
    shell的执行顺序问题
    七层负载均衡——HAProxy
    不要自以为是码农
    SSL协议运行机制
    Linux启动流程
    MIM协议与Base64编码
    Adele的生活
    你值得拥有:25个Linux性能监控工具
    [Zabbix] 如何实现邮件报警通知以及免费短信报警通知
    php.ini中date.timezone设置分析
  • 原文地址:https://www.cnblogs.com/chinaops/p/9651578.html
Copyright © 2020-2023  润新知