美文网首页其他
数据结构设计与开发规范

数据结构设计与开发规范

作者: 勤_ | 来源:发表于2021-10-25 17:04 被阅读0次

表设计规范

  • 对象名称必须使用小写,多单词统一使用下划线分割

  • 所有的表设计统一命名规范,主表用t_e_开头,关系表用t_con_开头,统计表用t_as_开头,例如
    plan_project换成t_e_plan_project,这样能见名知意理解作用。

  • 临时表必须以tmp_开头、以日期结尾,备份表必须以bak_开头、以日期结尾

  • 数据库和数据表统一使用UTF8MB4字符编码

  • 所有的表和字段必须添加注释

  • 表列保证在20个列以下,这样提高内存命中率,减少磁盘IO。

  • 主键id建议采用雪花算法,不要使用非自增的uuid。

  • 给表的外键的字段增加索引。

  • 这些表的字段大小长度按实际业务长度设计。

  • 尽量控制表行数在500万以内

  • 每一张InnoDB表都必须含有一个主键

    InnoDB 是一种索引组织表:数据的存储的逻辑顺序和索引的顺序是相同的。每个表都可以有多个索引,但是表的存储顺序只能有一种 InnoDB是按照主键索引的顺序来组织表的。不要使用可能会更新的列作为主键,同时尽量不要使用UUIDMD5HASH等无序的字符串作为主键。在没有特别的情况下,要使用自增的整型或发号器作为主键。

字段设计规范

  • 优先设置占存储空间最小的类型和长度

  • 使用 DATETIME存储时间

  • 尽可能避免使用TEXTBLOBENUM数据类型

    MySQL 内存临时表不支持TEXTBLOB这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行,毋庸置疑会降低查询的效率。

  • 尽可能将所有的数据列定义为NOT NULL类型

    NULL列比较特殊,需要额外的空间来保存,同时会造成索引失效。

  • 金额、分数相关的数据必须使用DECIMAL数据类型

  • 表与表关联的键名保持一致或以关联表名的缩写为前缀

  • 固定长度的字符串字段务必使用CHAR

  • 使用UNSIGNEG存储非负整数

  • 禁止敏感数据以明文形式存储

    确保信息的安全性,比如密码、隐秘数据等。

索引设计规范

  • 索引的命名以idx_开头,索引长度超过16个字符。

  • 禁止在索引列进行数学运算和函数运算

  • 避免冗余和重复索引

    在一张用户表里面,将用户id设置成主键的同时再设置成唯一索引,那就是重复索引,如果创建了索引(a,b),再设置a索引,则a为冗余索引,这两种错误的操作都会降低读写的性能。

  • 符合索引将区分度高的置前

    将区分度高的索引置前可以缩短查询的范围,以至提高查询的效率,特别是在JOIN连表查询,提高效率特别明显。

  • MySQL对索引字段长度是有限制的,TEXTBLOB类型只能使用前缀索引。

SQL使用规范

  • 危险的SQL语句必须带上索引作为条件

  • 严禁使用SELECT *查询字段

  • 查询语句务必带上索引以提高查询效率

  • 必须避免数据类型隐式转换

  • 禁止使用带有数据值却不带有字段键名的INSERT操作

  • 尽可能使用JOIN替代子查询操作

  • 避免使用JOIN关联过多的表,关联太多的情况,需要表重新设计。

    一般情况下,建议JOIN的表不要超过5个,JOIN多表查询比较耗时时间,关联的表越多越耗时间,防止执行超时或死锁。

  • 合并操作、减少数据库的交互

  • 禁止使用ORDER BY RAND()随机排序语句

  • 禁止在WHERE语句中进行计算

  • 大批量写操作尽可能合理地分批次处理

    大批量的操作应当合理平均分批次处理,防止死锁影响业务,同时尽量将跑批这种大操作至于凌晨操作。

  • 不在数据库做运算,务必将运算置于业务层

  • 禁止使用索引做运算

  • 使用事务尽量简单化,同时控制事务执行的时间

    时间长会导致长时间锁表,造成死锁,进而影响业务。

  • IN语句参数的个数尽量控制在1000以内

  • 注意LIMIT分页查询效率,LIMIT越大效率越低

    # S1
    SELECT `username` FROM `user` LIMIT 10000,20;
    # S2
    SELECT `username` FROM `user` WHERE id>10000 LIMIT 20;
    
  • 禁止使用LIKE添加%前缀进行模糊查询

  • 禁止一条语句同时对多个表进行写操作

相关文章

  • 数据结构设计与开发规范

    表设计规范 对象名称必须使用小写,多单词统一使用下划线分割 所有的表设计统一命名规范,主表用t_e_开头,关系表用...

  • 阶段性规划

    2016.12.08-2017.2.18 (1)完成结构设计规范学习:《混凝土结构设计规范》、《钢结构设计规范》、...

  • MySQL进阶:表结构设计

    摘要:MySQL 表结构设计是MySQL架构设计最为基础的工作,优化表结构设计是开发规范,避免后期因为表结构设计不...

  • MySQL数据库结构设计

    在编码过程中,如果MySQL数据结构设计不好的话,会大大影响开发人员编码效率。比如说MySQL数据库表设计不规范,...

  • 绪论

    对于大规模复杂系统来说,对总体的系统结构设计比对计算的算法和数据结构的选择更加重要;系统架构作为集成技术规范了开发...

  • mysql数据库规范

    一.建表规范 MYSQL数据库设计规范与原则 互联网MySQL开发规范 1.基础规范 使用 INNODB 存储引擎...

  • Mysql 规范

    Mysql 规范 数据库命名规范总结 数据库基本设计规范 索引设计规范 数据库字段设计规范 数据库SQL开发规范 ...

  • 阿里数据库开发规范:谁还敢说你的数据库设计的“烂”

    数据库设计几个规范: 数据库命名规范、数据库基本设计规范、数据库索引设计规范、数据库字段设计规范、数据库SQL开发...

  • 开发规范

    开发规范分为以下几种1.后台开发规范2.界面布局规范3.模块命名规范4.数据库开发规范 2.界面布局规范 软件窗口...

  • 撮合引擎开发:开篇

    撮合引擎开发:开篇撮合引擎开发:MVP版本撮合引擎开发:数据结构设计撮合引擎开发:对接黑箱撮合引擎开发:解密黑箱流...

网友评论

    本文标题:数据结构设计与开发规范

    本文链接:https://www.haomeiwen.com/subject/mpogoltx.html