复合主键表的列分区程序?

时间:2015-03-02 19:28:02

标签: spring-batch

就我而言,我必须将大量数据从一个表加载到另一个表。 (Tera到sqlserver)。使用JdbcCursorItemReader,在avg上加载200000条记录需要30分钟,因为该表有40列。所以我打算使用分区技术。

以下是挑战

  1. 该表具有复合主键(2列)。
  2. 其中一个列值具有负值。
  3. 在这种情况下,是否可以使用columnpartition技术?
  4. 我看到columnpartition技术使用一个主键并查找max和min值。在我的情况下,使用复合主要,即使我想到最大,最小,网格大小。框架是否支持处理复合主键以进行分区?

1 个答案:

答案 0 :(得分:0)

这里有几点需要注意:

  1. JdbcCursorItemReader不是线程安全的,因此它通常不用于分区方案。而是使用JdbcPagingItemReader
  2. 您对数据进行分区的逻辑纯粹取决于您。虽然通过列中的值来执行它很有用,但它并不适用于所有用例(如本例)。在此特定用例中,您可能希望按ROW_NUMBER()或类似的方式进行分区,或者按分区添加列。