互联网公司mysql数据库不要使用join,建议service层采用in等子查询解决方法

举报
轻狂书生FS 发表于 2020/12/03 01:02:12 2020/12/03
【摘要】 互联网公司的业务,往往是并发场景多,DB查询频繁,有一定用户规模后,往往要做分库分表。 阿拉巴巴的淘宝网,是从oracle迁移到mysql。原因是mysql免费,开源。互联网公司起步阶段都穷,往往要采用mysql。oracle太贵了,适合不差钱的行业,如金融,证券,军工,国企,制造业。oracle是RDBMS的NO1,多年数据库技术积累,很多方面强于mysql。 互联网行...

互联网公司的业务,往往是并发场景多,DB查询频繁,有一定用户规模后,往往要做分库分表。

阿拉巴巴的淘宝网,是从oracle迁移到mysql。原因是mysql免费,开源。互联网公司起步阶段都穷,往往要采用mysql。oracle太贵了,适合不差钱的行业,如金融,证券,军工,国企,制造业。oracle是RDBMS的NO1,多年数据库技术积累,很多方面强于mysql。

互联网行业,业务请求量大,整个架构,数据库是最底层的,瓶颈往往是数据库。建议数据库只是作为数据store的工具,而不要添加业务上去。

不使用join的原因: 

  1. DB承担的业务压力大,能减少负担就减少。当表处于百万级别后,join导致性能下降; 
  2. 分布式的分库分表。这种时候是不建议跨库join的。目前mysql的分布式中间件,跨库join表现不良。 
  3. 修改表的schema,单表查询的修改比较容易,join写的sql语句要修改,不容易发现,成本比较大,当系统比较大时,不好维护。

不使用join的解决方法: 

  1. 在业务层,单表查询出数据后,作为条件给下一个单表查询。也就是子查询。 
  2. 会担心子查询出来的结果集太多。mysql对in的数量没有限制,mysql限制整条sql语句的大小。通过调整参数max_allowed_packet ,可以修改一条sql的最大值。建议在业务上做好处理,限制一次查询出来的结果集是能接受的

文章来自于:http://m.zhizuobiao.com/mysql/mysql-18030500052/

文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/LookForDream_/article/details/90443669

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。