一、命名规范 库名、表名、字段名必须使用小写字母并采用下划线分割; 库名、表名、字段名禁 止超过32个字符,须见名知意; 库名、表名、字段名支持最多64个字符,统一规范、易于辨识以及减少传输量不要超过...32; 库名、表名、字段名禁止使用MySQL保留关键字; 临时库、临时表名必须以tmp为前缀并以日期为后缀; 备份库、备份表名必须以bak为前缀并以日期为后缀; 二、基本规范 使用...utf8mb4( 5.5.3版本以上支持) 所有表都需要添加注释,单表数据量建议控制在1000万以内; 不在数据库中存储图片、文件等大数据; 禁止在线上做数据库压力测试; 禁止从测试、开发环境直连数据库...; 三、库表设计规范 禁止使用分区表 MySQL的分区表实际性能不是很好,且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从...最擅长的是单表的主键/二级索引查询 Join消耗较多的内存,产生临时表 避免在数据库中进行数学运算 容易将业务逻辑和DB耦合在一起 MySQL不擅长数学运算和逻辑判断 无法使用索引
一、基础规范 1) 使用InnoDB存储引擎 2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci 3) 所有表、字段都尽量添加注释 4) 库名、表名、字段名使用小写字母...,禁止超过32个字符,须见名知意 5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名 二、查询规范 1) SQL语句尽可能简单,大的SQL...IN 10) Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表) 11) 禁止单条语句同时更新多个表 12) 事务要尽量简单,整个事务的时间长度不要太长 三、表设计规范...字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效) 6) 表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键 四、索引设计规范...尽量不要在频繁更新的列上建立索引 6) 不在低基数列上建立索引,例如状态、类型等 7) 不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引) 8) 复合索引须符合最左前缀的特点建立索引(mysql
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境...NULL值做特别的处理)使用timestamp或datetime类型来存储时间同财务相关的金额数据,采用decimal类型(不丢失精度,禁止使用 float 和 double)所有的数据库对象名称禁止使用MySQL...字符集必须统一,避免由于字符集转换产生的乱码,汉字utf8下占3个字节)所有表和字段都要添加注释COMMENT,从一开始就进行数据字典的维护建议使用物理分表的方式管理大数据尽量做到冷热数据分离,减小表的宽度(mysql...禁止给表中的每一列都建立单独的索引区分度最高的列放在联合索引的最左侧尽量把字段长度小的列放在联合索引的最左侧尽量避免使用外键(禁止使用物理外键,建议使用逻辑外键)尽量使用 union all 代替 union拆分复杂的大SQL为多个小SQL( MySQL
开发规范对象命名命名规范的对象,是指数据库SCHEMA、表TABLE、字段COLUMN、索引INDEX、约束CONSTRAINTS等【强制】凡是需要命名的对象,其标识符不能超过30个字符【强制】名称必须以英文字母开头...为前缀,以日期yyyymmdd为后缀,比如 tmp_order_20160425,正常业务用到的临时表、中间表,前后缀尽量不要包含 tmp 以免造成歧义库表设计【强制】生产/UAT环境建库建表,请参考《mysql...sql_mode为严格模式(STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION),在此模式下任何不支持的语法或者数据校验不合格的,都将直接返回错误【建议】日志类数据不建议存储在MySQL...建议】禁止使用ENUM,可使用TINYINT代替增加新的ENUM值要做DDL操作;ENUM的内部实际存储就是整数而非字符串;【建议】禁止使用OR条件,必须改为IN查询,并注意in的个数小于200旧版本mysql...)来判断是否为NULL值: SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;【建议】SQL合并,主要是指的DML时候多个value合并,减少和数据库交互开发行为规范
命名规范 库名、表名、字段名必须使用小写字母,并采用下划线分割 库名、表名、字段名禁用超过32个字符。...须见名知意 库名、表名、字段名禁用使 MySQL保留字 临时库、表名必须以tmp为前缀,并以日期为后缀 备份库、表必须以bak为前缀,并以日期为后缀 基础规范 使用INNODB存储引擎 表字符集使用utf8mb4...所有表都需要添加注释 单表数据量建议控制在5000W以内 不在数据库中存储图片、文件等大数据 禁止在线上做数据库压力测试 禁止从测试、开发环境直连数据库 库表设计 禁止使用分区表 拆分大字段和访问频率低的字段...UNSIGNED存储非负整数 INT类型固定占用4字节存储 使用timestamp存储时间 使用INT UNSIGNED存储IPV4 使用VARBINARY存储大写敏感的变 字符串 禁用在数据库中存储明文密码 索引规范
3、 禁止使用分区表 Mysql 分区表技术还是不是很成熟,而且对分区键有严格要求,分区表变大后对于表备份恢复都有很大困难,建议在业务端使用 sharding 技术。...4、 禁止在数据库中存储明文密码 如果需要存储 MySQL 密码可以用 MySQL 内置函数 password()对明文密码进行 MD5 进行加密。...规范项: 1、建表字符集使用 UTF8 或者 UTF8mb4 UTF8 统一而且通用,不会出现转码出现乱码风险。...定义为 Not Null 原因如下: MySQL 数据库中每个为 NULL 的列都需要额外的 1 个字节进行存储,浪费空间资源。...3、建议查询中避免隐式转换 MySQL 中如果查询字段与表定义字段不同则会发生隐式转换,从而无法用到索引导致查询效率低下。 4、建议不要在 MySQL 数据库中存放业务逻辑。
流程 数据库表结构的修改需要相关人员和Leader一起评审,保证符合涉及规范。 不允许使用root账号,所有开发和测试应当分配指定账号,并授予最小数据库权限 2....数据库与表规范 表命名规范 常规表表名以 t_开头,t 代表 table 的意思,命名规则即 「t + 模块(包含模块含义的简写)+ 表(包含表含义的简写)」,比如用户模块的教育信息表...MySQL在处理大表时,性能就开始明显降低,所以建议单表物理大小限制在16GB,表中数据行数控制在2000W内。^[业内的规则是超过2000W性能开始明显降低。...字段规范 字段命名规范 字段命名需要表示其实际含义的英文单词或简写, 「单词之间用下划线 _ 进行连接」,如 service_ip、service_port。...「ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后面,形成覆盖索引」 联合索引注意 「最左匹配原则」:必须按照从左到右的顺序匹配,MySQL会一直向右匹配索引直到遇到范围查询
一、基础规范 1. 使用INNODB存储引擎 2. 表字符集使用UTF8 3. 有表都需要添加注释 4. 单表数据量建议控制在5000W以内 5. 在数据库中存储图、文件等大数据 6....禁从测试、开发环境直连数据库 **二、命名规范 1. 库名、表名、字段名禁止超过32个字符。须见名之意 2. 库名、表名、字段名禁止使用MySQL保留字 3....备份库、表必须以bak为前缀,并以日期为后缀 三、库、表、字段开发设计规范 1. 禁使用分区表 2. 拆分大字段和访问频率低的字段,分离冷热数据 3. 采用合适的分库分表策略。 4....少用text/blob,varchar的性能会比text高很多,实在避免不了blob,请拆表 四、索引规范 1、索引的数量要控制: 1. 单张表中索引数量不超过5个 2....CPU) (2) 事务要简单,整个事务的时间长度不要太长 (3) 避免使用触发器、函数、存储过程 (4) 降低业务耦合度,为sacle out、sharding留有余地 (5) 避免在数据库中进数学运算(MySQL
最初是打算更新一版MySQL开发规范,把一些新的技术栈和思路都更新迭代,与时俱进,但是做了一段时间,发现这件事情比自己想得要复杂。...先说说总体的成果,SQL开发规范我是打算拆分为5个部分,包括数据库命名规范,对象结构设计规范,SQL优化设计规范、高并发设计规范和开发规范落地指南,这是循序渐进,从基础到进阶落地的内容组织形式。...5)开发规范落地指南:快速稳落地 我先列出一部分的内容,比如数据类型设计规范,是属于对象结构设计章节的。...数据库类型主要以MySQL为例进行说明,主要包括数值类型,字符类型和日期类型: 数值类型 注: 1)用户pid数据类型,根据平台统一规划应设计为bigint unsigned 2)MySQL中每个数据表中字段数量尽可能少且字段长度尽可能小...1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 2)如果对于时间类型字段需要设置动态的默认值,在MySQL 5.6.5以前不支持,需要使用timestamp,或者不设置默认值
尽量将子查询转化为连接查询,mysql 查询优化器会优化连接查询,但连接的表要尽可能的少,如果很多,可以考虑反范式设计。即对设计阶段做一些改造。...const、system:当MySQL对查询的某部分进行优化,并转化为一个常量时,可使用这些类型进行访问。...possible_keys 将指出MySQL能使用哪个索引在表中找到行,查询涉及的字段上若存在索引,则该索引将被列出,但不一定会被查询使用。...key:最有价值信息之二 key 将显示MySQL在查询中实际使用到的索引,若没有使用索引,则显示为null。...2.Using where如果查询未能使用索引,则Using where 的作用只是提醒我们 MySQL 将用where 子句来过滤结果集。
命名规范 1.库名、表名、字段名必须使用小写字母,并采用下划线分割。...d)为了统一规范, 库名、表名、字段名使用小写字母。 2.库名、表名、字段名禁止超过32个字符。...库名、表名、字段名支持最多64个字符,但为了统一规范、易于辨识以及减少传输量,禁止超过32个字符。 3.使用INNODB存储引擎。...使用INT UNSIGNED而不是CHAR(15)来存储IPV4地址,通过MySQL函数inet_ntoa和inet_aton来进行转化。...21.不要在MySQL数据库中存放业务逻辑。 数据库是有状态的服务,变更复杂而且速度慢,如果把业务逻辑放到数据库中,将会限制业务的快速发展。
3、避免用MySQL的保留字,如:backup、call、group等。 4、所有数据库对象使用小写字母,实际上MySQL中是可以设置大小写是否敏感的,为了保证统一性,我们这边规范全部小写表示。...3、如无特殊需要,严禁开发人员创建视图。 4、命名应使用小写。 七、存储过程命名规范 1、存储过程名以sp开头,表示存储过程(storage procedure)。之后多个单词以下划线(_)进行连接。...但N应尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,且存储字符个数由所选字符集决定。...六、约束设计规范 1、PK应该是有序并且无意义的,由开发人员自定义,尽可能简短,并且是自增序列。 2、表中除PK以外,还存在唯一性约束的,可以在数据库中创建以“uk_”作为前缀的唯一约束索引。...3、MySQL中的text类型字段存储: (1)不与其他普通字段存放在一起,因为读取效率低,也会影响其他轻量字段存取效率。
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符) 所有的数据库对象名称禁止使用MySQL保留关键字(如 desc、range、match...、delayed 等,请参考 MySQL官方保留字 【https://dev.mysql.com/doc/refman/5.7/en/keywords.html】 ) 临时库表必须以tmp为前缀并以日期为后缀...MySQL没有对存储有限制,取决于存储设置和文件系统) 谨慎使用mysql分区表(分区表在物理上表现为多个文件,在逻辑上表现为一个表) 谨慎选择分区键,跨分区查询效率可能更低 建议使用物理分表的方式管理大数据...) 禁止在表中建立预留字段(无法确认存储的数据类型,对预留字段类型进行修改,会对表进行锁定) 禁止在数据中存储图片,文件二进制数据(使用文件服务器) 禁止在线上做数据库压力测试 禁止从开发环境...在代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句 ---- 参考: 《阿里巴巴Java开发手册》 《高性能可扩展MySQL数据库设计及架构优化》
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA、...避免用MySQL的保留字如:call、group等 4. 所有数据库对象使用小写字母 数据库命名规范 1. 数据库名不能超过30个字符 2. 数据库命名必须为项目英文名称或有意义的简写 3....MySQL在处理大表时,性能就开始明显降低,所以建议单表物理大小限制在16GB,表中数据控制在2000W内 13....如无特殊需要,严禁开发人员使用MEDIUMTEXT、TEXT、LONGTEXT类型 对于精确浮点型数据存储,需要使用DECIMAL,严禁使用FLOAT和DOUBLE 如无特殊需要,严禁开发人员使用BLOB...尽量使用Btree索引,不要使用其它类型索引 约束设计规范 1. PK应该是有序并且无意义的,尽量由开发人员自定义,且尽可能短,使用自增序列 2.
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql的保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要做到见名识意...尽量做到冷热数据分离,减少表的宽度 常用数据在一个表,读取频次少的数据在另一个表 禁止在表中设置预留字段 不要在表中存储二进制图片,文件等较大数据,但可以存放他们的路径或者地址 禁止做线上的数据库压力测试 禁止从开发环境...而且对于这种数据,Mysql还是要进行二次查询,会使sql性能变得很差,但是不是说一定不能使用这样的数据类型。...数据库SQL开发规范 1、建议使用预编译语句进行数据库操作 预编译语句可以重复使用这些计划,减少SQL编译所需要的时间,还可以解决动态SQL所带来的SQL注入的问题 只传参数,比传递SQL语句更高效...同时对于关联操作来说,会产生临时表操作,影响查询效率Mysql最多允许关联61个表,建议不超过5个。
SQL规范: 关键字是大写. SELECT * FROM user; where 1. 条件比较 可以判断null值,=是不可以判断null值 >= <= !
控制单表数据量:单表记录控制在1000w 控制列数量:字段数控制在20以内 平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 拒绝3B:拒绝大sql,大事物,大批量 varchar是变长存储的,所以实际开发中我们一般都把
优缺点:第一种在内存中需要创建一个新实体,需要消耗性能,第二种需要在MySQL中做一次比较原值和修改值是否一致,一致不做修改的性能消耗 public String save(){ GraduateStatus
首发博客地址[1] 系列文章地址[2] ---- 引自《阿里规约》的开头片段: 现代软件架构的复杂性需要协同开发完成,如何高效地协同呢?...2)很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。然而,在任何情况下,这是一个非常不好的做法。...(一) Vue 编码基础 vue 项目规范以 Vue 官方规范(https://cn.vuejs.org/v2/style-guide/)[3] 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范...命名规范采用KebabCase命名规范且与 component 组件名保持一致!...首发博客地址: https://blog.zysicyj.top/ [2] 系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/开发规范
领取专属 10元无门槛券
手把手带您无忧上云