mysql重构查询方式

前几天有个同事需要开发一个功能,需要的数据来自不同的数据库。同事说,在不同数据库读取数据性能很差。我倒是不太认同这样的一个说法。
我认为在前期对业务进行做垂直分层对后期的拓展、负载、性能、故障转移等很多方面是很有好处且很有必要的(前期对项目规模的预测很重要,如果是很小的项目就没必要这样做),另外关于跨数据库查询性能差这种说法我认为不一定,这个要视情况而定,因为MySQL在设计上从连接到断开都是很轻量级的,在返回一个小的查询结果集方面非常高效,而且在现在的网络中,带宽和网络延迟都比以前快很多。跨数据库查询就类似(查询形式上的类似,并非性能上的类型)于在单个数据库中把一个复杂的查询拆分成几个小查询。

一般情况下,如果能一次查询所有的结果集,并且响应的时间在可接受的范围内那么不建议多次查询,但是有时候连表查询可能性能很差,这时候可以考虑把一个复杂的查询拆分成多个小的查询,通过多次测试找到合适的方案(事实上,跨数据库设计已对服务器做负载,就单查询方面来说,查询的性能可能会比单个数据库更高,而且在流量的高峰期会更加明显)。

推荐文章