作为后端开发需要知道的mysql知识

前提,你是开发,不是DBA,不是运维。

其次,一下均为建议,具体还是以公司规定为准。

常规规范

  • 引擎大多数是Innodb,字符一般是utf8,需要存表情一般是utf8mb4。
  • 数据表、字段必须写注释,而且一定要记得更新注释。
  • 一般不要使用存储过程、视图、触发器、Event。就是骚操作,骚着骚着头发就没了,尽量把数据库就当仓库,不要写逻辑。
  • 禁止存图片和大文件,CDN、对象存储了解一下。
  • 如果业务设计时候就知道数据量非常大,提前分表。
  • 平衡范式和冗余,参考:学习mysql的最后一座大山—表设计
  • 内网域名连接,别外网,别用IP。
  • 根据业务分账号,方便隔离和熔断。

命名

这个就纯属看公司了。大多是小写加下划线,不要太长,适当简写。

表设计

  • 控制表大小、字段数量、冷热数据分离,这个写的挫DBA会diss的。
  • 别用外键,别用null。
  • 必须要有主键。通常用自增ID做主键。
  • 尽量别用enum,添加需要改表结构,直接用数值类型。
  • char和varchar、datetime和timestamp的区别要清楚。

索引设计

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

发表回复

登录后才能评论
咨询电话
联系电话:0451-81320577

地址:哈尔滨市松北区中小企业总部基地13F

微信咨询
微信咨询
QQ咨询
分享本页
返回顶部