UTS数据同步速度调优
在数据的同步过程中如果某些表的同步速度始很慢达不到预期,那么将有如下几个思路排查问题和优化:
一、数据库索引
影响UTS同步效率很大的因素就是数据库查询的效率,所以在使用的过程中就需要尽可能的避免慢查询SQL的产生,索引的有效性就显得尤为关键,可以从以下几点开始排查:
检查数据源和目标表中的时标识字段是否有索引,如果没有索引,则需要给标识字段加上索引。
如果配置了同步条件,则需要检查数据源数据库和目标数据库的条件字段是否有索引,条件字段+标识字段是否有复合索引,同时还需要检查配置的同步条件在客户端数据库能否正常执行。
二、网络排查
如果UTS服务端和客户端是跨网络传输的,那么带宽的大小也是影响数据同步的一个很大因素,所以排除了索引的问题后,如果还很慢,就需要看看是否是因为跨网络带宽太小导致同步速度太低了。
三、UTS的系统参数优化
如果上述因素全部排除,某些表还是很慢,则可以通过优化UTS的系统参数来提升同步的效率,下面针对不同的情况一一介绍。UTS的同步速度有三种策略模式,分别是高速模式、中速模式和低速模式,这三种模式通过控制一次从服务端查询的数据集的大小来影响同步速度。顾名思义,高速模式肯定是最快的,下面主要讲解如果选择了高速模式之后同步速度还是很慢时如何去调整系统参数提升同步效率。
我们同步过程中会有不同的场景,比如涉及到数据表、视图的同步,对于UTS来说不管是数据表还是视图的同步逻辑都是一样,UTS并不区分视图还是表,只会针对表中的不同数据类型的字段去智能的调整同步的策略。
普通表的同步
普通表指的是不含TEXT、CLOB、BLOB、IMAGE等大字段的表的。这类表一般都比较常见,UTS采取的策略是计算每一条记录所占的字节数,然后使用系统参数单次读取记录集包长(高速)的值除以单条记录占用的字节数得到一个取整的值P1,然后和单次最大读取记录数(高速)比较,取较小值作为一个批次查询的结果集的大小。如果最后计算出来的值越大,则同步速度越快。
所以如果需要再加快速度,则需要调大系统参数单次读取记录集包长(高速)和系统参数单次最大读取记录数(高速)
含有TEXT或者CLOB字段的表
如果表中含有TEXT类型的字段或者CLOB类型的字段,则需要调整系统参数有TEXT字段,单次最大读取记录数(高速)的值,如下图所示
如果该参数设置的值太小,则同步速率会很低,需要调大该参数的值。
含有BLOB或者BLOB字段的表
如果表中含有TEXT类型的字段或者CLOB类型的字段,则需要调整系统参数有IMAGE字段,单次最大读取记录数(高速)的值,如下图所示
系统默认值是10,如果单条记录并不是很大,这个值就过于小了一点,需要调大才能加快同步速度。
四、加大线程数
如果上述系统参数都设置好了,且网络带宽资源也没有瓶颈,则可以增大同步线程数,如上图所示。