分布式数据库复杂 SQL 的执行效率如何? 有没有优化? 核心跑批 和 实时联机 是否都迁移到分布式数据库了?

  1. 比如多表join联查,举个栗子,用卡号来查交易流水信息,涉及到多张表,怎么优化?
参与4

1同行回答

DingkDingk副总经理张家港行
我行核心所有实时、批处理都在TD上运行。仅以TD解释,不同实现应对方法不同。TD的分库是使用表的shardkey的hash计算值来分的,这个键是表的一个字段。如单表查询,如查询条件有shardkey字段并指定值,系统会将SQL直接路由至具体数据对应节点查询,效率最高。如这个键未指定值,则系...显示全部

我行核心所有实时、批处理都在TD上运行。

仅以TD解释,不同实现应对方法不同。
TD的分库是使用表的shardkey的hash计算值来分的,这个键是表的一个字段。
如单表查询,如查询条件有shardkey字段并指定值,系统会将SQL直接路由至具体数据对应节点查询,效率最高。如这个键未指定值,则系统将SQL分发所有节点分别执行,再由代理层汇总数据返回,效率也不差。
多表关联情况,如两表关联条件包含shardkey互等,两表的关联数据,必都分别落在同一物理节点,系统将语句下发各节点分别执行,再汇总数据,这样效率很高。如没有shardkey的关联,则需代理将两表全量数据拉至代理,再运算,效率极差。
所以设计的关键是shardkey的设计与选择。

查指定卡的交易流水:
如关联的是两个流水表,那以两个流水表共有的流水字段作shardkey即可,但这种方式并不太好。最好是给表加卡号的冗余字段,让每个表都有卡号,并以卡号作为shardkey,并给查询条件加上卡号的关联,这样通用性更强。
单一场景很好做,但要多场景适用需全面考虑设计。

收起
银行 · 2020-06-05
浏览1394

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-06-04
  • 关注会员:3 人
  • 问题浏览:2928
  • 最近回答:2020-06-05
  • X社区推广