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

624

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

前提,你是开发,不是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可以点赞让更多人看到它。

相关阅读:

学习mysql的最后一座大山---表设计

学MySQL的第一座大山---索引

学MySQL的第二座大山---锁,事务

MySQL为什么要用B+树?