
前提,你是开发,不是DBA,不是运维。
其次,一下均为建议,具体还是以公司规定为准。
常规规范
- 引擎大多数是Innodb,字符一般是utf8,需要存表情一般是utf8mb4。
- 数据表、字段必须写注释,而且一定要记得更新注释。
- 一般不要使用存储过程、视图、触发器、Event。就是骚操作,骚着骚着头发就没了,尽量把数据库就当仓库,不要写逻辑。
- 禁止存图片和大文件,CDN、对象存储了解一下。
- 如果业务设计时候就知道数据量非常大,提前分表。
- 平衡范式和冗余,参考:学习mysql的最后一座大山—表设计
- 内网域名连接,别外网,别用IP。
- 根据业务分账号,方便隔离和熔断。
命名
这个就纯属看公司了。大多是小写加下划线,不要太长,适当简写。
表设计
- 控制表大小、字段数量、冷热数据分离,这个写的挫DBA会diss的。
- 别用外键,别用null。
- 必须要有主键。通常用自增ID做主键。
- 尽量别用enum,添加需要改表结构,直接用数值类型。
- char和varchar、datetime和timestamp的区别要清楚。
索引设计
- 控制索引数量
- 建立更合适的索引。参考:学MySQL的第一座大山—索引
SQL的使用
- 别用
select *
,同理,尽量带上limit,格外注意,搞得不好可能提桶。 - 注意一些会导致索引失效的情况。
- null
- where后面加函数
- where或者join两个类型不一样。
- not in 改成子查询
- limit 1000,10 改成 >1000 limit 10
- in 不要太多(一般是50个左右),多了就改成子查询。
- where 的索引顺序怎么放,也是参考我的索引篇。
Inset into 表名 values(值1,值2,值3)
改成Inset into 表名(字段1,字段2,字段3) values(值1,值2,值3)
总结
相信有了这些基础,基本不会因为数据库提桶了,但是尽量在写完之后都看一下执行计划,有没有坑。
结语
- 如果有不对的地方欢迎指正。
- 如果有不理解的地方欢迎指出我来加栗子。
- 如果感觉OK可以点赞让更多人看到它。
原创文章,作者:睿达君,如若转载,请注明出处:http://zrrd.net.cn/2331.html