侧边栏壁纸
博主头像
Monkey部落博主等级

Monkey部落,分享技术、经验、遇到的问题及解决方法,欢迎大家互相讨论分享。

  • 累计撰写 59 篇文章
  • 累计创建 36 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

MySQL数据库规范

Monkey部落
2022-10-24 / 0 评论 / 0 点赞 / 234 阅读 / 1,013 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-10-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

MySQL数据库规范

前言

今天我们来聊一聊MySQL数据库常见的一些建议设计规范,参考阿里的《JAVA开发手册泰山版》,我们简单挑出几处进行简单分析和回顾复习,如果有不正确或者不足的地方,还请指正。

规范

  1. 表名、字段名命名必须使用小写字母或数字,并且使用下划线进行分隔,禁止以数字开头。

    MySQL在Windows系统下不区分大小写,但是在Linux系统下默认是区分大小写。

  2. 表名、字段名命名禁止使用MySQL的关键字。

    该条规范和各类语言禁止定义关键字作为变量名称一样,MySQL中的关键字有很多,例如:desc、and、asc等。

  3. 小数类型使用decimal,禁止使用float和double

    float和double会存在精度丢失的问题,这个我在前面的文章中已经详细解释过了,具体的可以看之前的文章,如果存储超过decimal范围,可以采取将整数和小数分开存储的方案,这个之前文章也讲过。

  4. join查询时禁止超过三张表,并且join的字段数据类型需要保持一致,关联查询时关联的字段需要添加索引。

    如果关联的字段数据类型不一致,可能会导致索引失效。

  5. 推荐使用count(*)统计行数,不推荐使用count(列名)或者count(常量)

    count(列名)会过滤掉列为NULL的行。

  6. 判断列是不是NULL,使用ISNULL()进行判断

    NULL和任何值进行直接比较,结果都是NULL。

  7. 禁止使用外键和级联,外键的解决放在应用层进行解决。

    外键和级联适合低并发,对于高并发、分布式集群不适合,级联更新是强阻塞,存在数据库更新风暴的风险,外键影响数据库的插入速度。

  8. 在使用Mybatis、Hibernate或者做其他ORM映射时,禁止使用HashMap进行接收结果集

    HashMap作为接收结果集一般不会有什么问题,但是里面的key和value无法把控,包括类型无法把控。

  9. 更新字段时,不更新的字段尽量不要更新,不要使用一个更新接口,不管是不是需要更新,直接每次更新所有字段。

    更新所有字段效率比较低,并且数据库binlog日志存储会变大,排查问题是也会变得比较麻烦。

  10. 对于上方所说的查询时关联查询禁止超过三张表,我们可以采用字段冗余,提高查询性能。

    字段冗余可以提高查询性能,但是必须需要保持冗余的字段数据是一致的,尽量不要是频繁修改的字段,不是唯一索引的字段,不是varchar超长字段或者text字段。

总结

我们今天简单选了10个规范进行简单的分析和回顾,对于部分规范,例如为何使用decimal,推荐使用的数据库编码等具体的原因分析,我之前文章也有详细写过,可以参考之前的文章,也可以详细的阅读《JAVA开发手册泰山版》及一些相关书籍。

关注微信公众号「平哥技术站」, 每日更新,在手机上阅读所有教程,随时随地都能学习。

觉得写的还不错的小伙伴,请作者喝杯咖啡☕ ,支持一下。😊

如有侵权请立即与我们联系,我们将及时处理,联系邮箱:865934097@qq.com。

0

评论区