互联网公司的业务,往往是并发场景多,DB查询频繁,有一定用户规模后,往往要做分库分表。
阿拉巴巴的淘宝网,是从oracle迁移到mysql。原因是mysql免费,开源。互联网公司起步阶段都穷,往往要采用mysql。oracle太贵了,适合不差钱的行业,如金融,证券,军工,国企,制造业。oracle是RDBMS的NO1,多年数据库技术积累,很多方面强于mysql。
互联网行业,业务请求量大,整个架构,数据库是最底层的,瓶颈往往是数据库。建议数据库只是作为数据store的工具,而不要添加业务上去。
不使用join的原因:
DB承担的业务压力大,能减少负担就减少。当表处于百万级别后,join导致性能下降; 分布式的分库分表。这种时候是不建议跨库join的。目前mysql的分布式中间件,跨库join表现不良。 修改表的schema,单表查询的修改比较容易,join写的sql语句要修改,不容易发现,成本比较大,当系统比较大时,不好维护。
不使用join的解决方法:
在业务层,单表查询出数据后,作为条件给下一个单表查询。也就是子查询。 会担心子查询出来的结果集太多。mysql对in的数量没有限制,mysql限制整条sql语句的大小。通过调整参数max_allowed_packet ,可以修改一条sql的最大值。建议在业务上做好处理,限制一次查询出来的结果集是能接受的
文章来自于:http://m.zhizuobiao.com/mysql/mysql-18030500052/