根据以下参考文章,自己整理了一份数据库使用规范:
https://blog.csdn.net/u012758088/article/details/77113122
https://segmentfault.com/a/1190000012658563
https://my.oschina.net/u/182501/blog/1595475
《阿里巴巴Java开发手册》
数据库基础设置
- 必须使用InnoDB存储引擎
说明:持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 - 使用utf8mb4编码,数据库和表都需要支持
说明:万国码,无需转码,无乱码风险,节省空间,utf8mb4是utf8的超集,由于近年移动设备的增多,emoji表情以及部分不常见汉字在utf8下会表现为乱码,故需要升级至utf8mb4 - 禁止存储大文件或者大照片,文档型数据可以存在mongodb等数据库中,文件/照片 等可以存储在文件服务器,数据库存储URI
- 连接数据库,为考虑后续扩展及迁库,采用域名方式链接,禁止采用ip+port方式链接。不同环境的域名需要在名称上得以区分
- 控制单表数量,对于高并发(100)量的单表数据不宜超过300w,对于低并发的不宜超过1000w。或者容量超过 2GB,推荐进行分库分表,如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。
- 根据业务情况,考虑使用合适的隔离级别
建表字段设计规范
-
命名规范
1、数据库实例名区分不同环境,库名需要区分不同业务线。
2、库名、表名、字段名:小写,下划线风格, 禁止出现数字开头,禁止两个下划线中间只出现数字,不超过32个字符,禁止拼音英文混用,见名能知其意。表的命名最好是加上“业务名称_表的作用”
3、表、字段必须加有中文注释
4、字段名禁止使用保留字,如 desc 、 range 、 match 、 delayed 等,请参考 MySQL 官方保留字
-
数据类型规范
1、varchar长度不得超过2000。
说明:varchar是变长的数据类型,仅使用必要的数据空间,同时需要额外的空间存储长度。在数据产生变更时,容易产生页分裂。2、使用varchar时,长度尽可能接近实际长度。
说明:varchar在硬盘中是变长,而读取到内存则是定长,临时表同理,与varchar(5)相比varchar(200)的长度无疑更消耗性能。3、char适合存储非常短的字符串,或者长度几乎一致的字符串(md5)。而varchar则能满足大部分的要求。
4、任何字段如果为非负数,必须是 unsign