Mysql 5.7 数据库设计规范v1.0
8页1、Mysql 5.7 数据库设计规范一、 基础规范1.1 必须使用InnoDB存储引擎没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等,空间数据请使用Myisam存储引擎)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好。1.2 禁止使用关键字以及保留字1.3 必须使用utf-8字符集万国码兼容性更高,无需转码,无乱码风险,节省空间。1.4 数据表以及字段必须加入中文注释使用comment从句添加表和列的备注,为了避免随着时间的推移以及研发人员的迭代后研发人员无从知晓字段的真正含义。1.5 禁止使用触发器以及event触发器与event可移植性差,占用数据库服务器资源,给数据库服务器造成压力,执行速度主要取决于数据库服务器的性能与触发器代码的复杂程度,嵌套调用一旦出现问题,排错困难,而且数据容易造成不一致,最重要的是后期维护极为不方便。业务层面的需求必须在业务层面解决,而不是把业务需求传递给数据库解决。1.6 禁止在数据库中存储图片
2、文件等大的二进制数据通常文件很大,会短时间内造成数据量快速增长,数据库进行数据库读取时,通常会进行大量的随机IO操作,文件很大时,IO操作很耗时 通常存储于文件服务器,数据库只存储文件地址信息。1.7 禁止在表中建立预留字段预留字段的命名很难做到见名识义 预留字段无法确认存储的数据类型,所以无法选择合适的类型 对预留字段类型的修改,会对表进行锁定。1.8 禁止在线上做数据库压力测试原则上禁止,具体原因没必要做过多的解释。1.9 禁止开发环境测试环境直连生产环境数据库1.10 禁止为程序使用的账户赋予super权限当达到最大连接数限制时,还运行1个有super权限的用户连接super权限只能留给DBA处理问题的账号使用1.11 对于程序连接数据库账号应遵循权限最小原则程序使用数据库账号只能在一个DB下使用不准跨库,程序使用的账号原则上不准有drop权限。二、 数据库命名规范2.1 数据库命名采用26个英文字母以及下划线_组成,命名简洁明确(长度不能超过30个字符)且必须小写,建议使用如:dzzh_sso,dzzh_log,格式给数据库加个前缀。2.2 备份数据库命名采用26个英文字母以及
3、下划线_组成以及日期部分组成,命名简洁明确(长度不能超过40个字符)且必须小写,建议使用如:dzzh_sso_20200204,dzzh_log_20200204。 三、 数据表设计规范33.1 命名规范采用26个英文字母且必须小写加上下划线_组成,命名简洁明确,多个单词用下划线_分隔,例如:user_login, user_profile, user_detail, user_role, user_role_relation,前缀user_可以有效的把相同关系或类型的表显示的聚合在一起。3.2 物理主键每个表必须有一个物理主键且必须为int类型自增长;主键递增,数据行写入可以 提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用;无主键的表删除,在row模式的主从架构,会导致备库夯住;业务层原则上禁止使用物理主键。3.3 逻辑主键建议每个表都有一个逻辑主键(无需设置为主键),类型为varchar(36)用于保存uuid数据,逻辑主键应用于具体业务数据唯一标识,为了避免对外暴露物理主键从而规避业务数据被不法推导造成数据泄露。3.4 数据表数据数量控制单表数据量的大小,建议
4、控制在500万以内,500万条记录并不是mysql数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小。3.5 数据表字段数量单张数据表字段不得超过64个,mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节 减少磁盘IO,保证热数据的内存缓存命中率(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO) 更有效的利用缓存,避免读入无用的冷数据经常一起使用的列放到一个表中(避免更多的关联操作)。3.6 分区表谨慎使用mysql分区表,分区表在物理上表现为多个文件,在逻辑上表现为一个表 谨慎选择分区键,跨分区查询效率可能更低 建议采用物理分表的方式管理大数据。3.7 外键禁止使用外键约束,外键可用于保证数据的参照完整性,但建议在业务端实现因为外键会影响父表和子表的写操作从而降低性能。四、 数据表字段设计规范44.1 命名规则采用26个英文字母且必须小写或下划线_组成,命名简洁明确,多个单词用下划线_分隔,命名必须简明扼要。4.2 字段设计原则优先
《Mysql 5.7 数据库设计规范v1.0》由会员1818****572分享,可在线阅读,更多相关《Mysql 5.7 数据库设计规范v1.0》请在金锄头文库上搜索。
武汉专版七年级英语下册Unit1Canyouplaytheguitar第四课时作业课件新版人教新目标
山西专版七年级英语下册Unit5Whydoyoulikepandas第三课时作业课件新版人教新目标
武汉专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标
武汉专版七年级英语下册Unit5Whydoyoulikepandas第四课时作业课件新版人教新目标
武汉专版七年级英语下册Unit5Whydoyoulikepandas第一课时作业课件新版人教新目标
山西专版七年级英语下册Unit5Whydoyoulikepandas单元写作专项作业课件新版人教新目标
山西专版七年级英语下册Unit1Canyouplaytheguitar特色题型组合练作业课件新版人教新目标
九年级历史上册第一单元古代亚非文明第3课古代尤作业课件新人教
九年级历史上册第五单元走向近代第13课西欧经济和社会的发展作业课件新人教
山西专版七年级英语下册Unit12Whatdidyoudolastweekend单元语法专项作业课件新版人教新目标
山西专版七年级英语下册Unit1Canyouplaytheguitar单元写作专项作业课件新版人教新目标
九年级历史下册第四单元经济大危机和第二次世界大战第14课法西斯国家的侵略扩张作业课件新人教版202105181
九年级历史上册第四单元封建时代的亚洲国家第11课古代日本作业课件新人教
八年级英语下册Module1FeelingsandimpressionsUnit2IfeelnervouswhenIspeakChinese小册子作业课件新版外研版
八年级英语下册Module9FriendshipUnit1CouldIaskifyou'vementionedthistoher小册子作业课件新版外研
九年级化学上册第1章开启化学之门第3节怎样学习和研究化学第1课时课件沪
山西专版七年级英语下册Unit1Canyouplaytheguitar第二课时作业课件新版人教新目标
九年级历史下册第三单元第一次世界大战和战后初期的世界第11课苏联的社会主义建设教学课件新人教
九年级历史上册第五单元走向近代第16课早期殖民掠夺作业课件新人教
2021春七年级历史下册第二单元辽宋夏金元时期民族关系发展和社会变化第12课宋元时期的都市和文化习题课件新人教版
2024-03-07 87页
2023-12-26 16页
2023-12-26 28页
2023-07-21 7页
2023-07-21 3页
2023-07-21 14页
2023-07-21 3页
2023-07-21 30页
2023-07-21 34页
2023-07-21 15页