JDBC数据源多分片管理

功能介绍

该功能适用于JDBC数据源,旨在通过把待读取的数据表划分为多个分片,并由集群的多个worker节点同时发起读取数据分片,以达到加快数据读取速度的效果。

属性配置

多分片管理的配置以连接器为单位,开启该功能的数据表需要在所属的连接器的配置文件(例如名为mysql的连接器对应的配置文件为etc/mysql.properties)添加以下属性:

属性列表: 配置文件配置项说明:

  1. jdbc.table-split-enabled=true
  2. jdbc.table-split-stepCalc-refresh-interval=10s
  3. jdbc.table-split-stepCalc-threads=2
  4. jdbc.table-split-fields=[{"catalogName":"test_catalog", "schemaName":null, "tableName":"test_table", "splitField":"id","dataReadOnly":"true", "calcStepEnable":"false", "splitCount":"5","fieldMinValue":"1","fieldMaxValue":"10000"},{"catalogName":"test_catalog1", "schemaName":"test_schema1", "tableName":"test_tabl1", "splitField":"id", "dataReadOnly":"false", "calcStepEnable":"true", "splitCount":"5", "fieldMinValue":"","fieldMaxValue":""}]

上述属性说明如下:

  • jdbc.table-split-enabled:是否开启多分片读取数据功能,默认为false。
  • jdbc.table-split-stepCalc-refresh-interval:动态更新分片的取值范围的周期,默认值为5分钟。
  • jdbc.table-split-stepCalc-threads:动态更新分片的取值范围的线程数,默认值为4。
  • jdbc.table-split-fields:各个数据表的分片配置信息,请参考”分片配置信息填写说明”。

分片配置信息填写说明

每个数据表的配置信息由多个子属性构成,按JSON格式的来填写,说明如下:

子属性名称描述填写建议
catalogName该数据表在数据源里所属的catalog的名字,对应标准jdbc的DatabaseMetaData.getTables接口返回的”TABLE_CAT”字段的内容按实际值填写,空值请填null
schemaName该数据表在数据源里所属的schema的名字,对应标准jdbc的DatabaseMetaData.getTables接口返回的”TABLE_SCHEM”字段的内容按实际值填写,空值请填null
tableName该数据表在数据源里的名字,对应标准jdbc的DatabaseMetaData.getTables接口返回的”TABLE_NAME”字段的内容需要按实际值填写
splitField划分分片的列名需要选取取值为整型的列,建议选取重复值少分布均匀的列,以便划分出均匀的分片
calcStepEnable是否需要动态调整分片的区间取值范围对存在数据变更的数据表设置为”true”
dataReadOnly是否是只读数据表对只读数据表设置为”true”
splitCount读取数据分片的并发数请按调优的最佳取值来填写
fieldMinValuesplitField字段的最小值对只读数据表建议按查询结果来配置,否则填”“或“null”
fieldMaxValuesplitField字段的最大值对只读数据表建议按查询结果来配置,否则填”“或“null”