(1)分布式数据库数据是分布在多个节点的,当需要进行多表关联时,往往很难避免数据在节点间流动,导致查询效率较低。建议从以下几个方面进行优化:
1)合理进行表设计,尽量避免跨节点表关联:
a) 对所有的库表进行重新设计,合理设置分区键,分区键也是表的字段,表根据分区键字段将数据打散在各个节点,因此分区键设置时要从全局和交易局综合考虑,将交易中经常用来关联的字段设置为分区键,比如客户账户。
b) 对于更新评论较少且数据量不大的表,建议设置成全局表,即每个数据节点保存该表的全量数据,这样分片表和全局表进行关联时,也不会有节点间数据流动。
2)对于跨节点关联的改造:
a)对此类SQL进行拆分,拆成多个单表SQL或者节点内关联SQL。无法拆分过程中可以考虑使用临时表(中间表),将中间数据放到临时表,中间表进行承上启下的关联。
b)对交易业务逻辑进行重新设计,改造复杂 SQL 。
总的就是交易中必须避免节点间数据的流动,以免影响系统并发性能和扩展性能。
(2)月季度结息逐笔进行,根据一定的规则进行分组,并发执行,然后,优化好每笔结息事务,进行SQL优化,比如优化跨节点多表关联,确保可以通过高并发实现快速结息,同时保证后续的可扩展性,较好适配分布式数据库。
(3)对于热点账户,建议设置为异步模式,即先记账,定时扣款,减少互锁,提升性能;为防止账务风险,可以设定阈值,账户余额低于阈值时,开启同步模式,高于阈值时开启异步模式;
收起