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

互联网公司的业务,往往是并发场景多,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/

你可能感兴趣的:(Java技术)