复合主键表的列分区器?
Columnpartitioner for composite primay key tables?
就我而言,我必须将大量数据从一个 table 加载到另一个。 (Tera 到 sqlserver)。使用 JdbcCursorItemReader
,加载 200000 条记录平均需要 30 分钟,因为 table 有 40 列。所以我打算使用分区技术。
以下是挑战
- table 有一个复合主键(2 列)。
- 并且其中一个列值具有负值。
- 在这种情况下可以使用列分区技术吗?
- 我看到列分区技术使用一个主键并查找最大值和最小值。在我的例子中,使用复合主,即使我想出了最大、最小、网格大小。框架是否支持处理用于分区的复合主键?
这里有几点需要注意:
JdbcCursorItemReader
不是线程安全的,因此它通常不用于分区场景。而是使用 JdbcPagingItemReader
。
- 您对数据进行分区的逻辑完全取决于您。虽然通过列中的值来执行此操作很有用,但它并不适用于所有用例(如本例)。在这个特定的用例中,您可能希望按
ROW_NUMBER()
或类似的东西进行分区,或者添加一列以按 进行分区
就我而言,我必须将大量数据从一个 table 加载到另一个。 (Tera 到 sqlserver)。使用 JdbcCursorItemReader
,加载 200000 条记录平均需要 30 分钟,因为 table 有 40 列。所以我打算使用分区技术。
以下是挑战
- table 有一个复合主键(2 列)。
- 并且其中一个列值具有负值。
- 在这种情况下可以使用列分区技术吗?
- 我看到列分区技术使用一个主键并查找最大值和最小值。在我的例子中,使用复合主,即使我想出了最大、最小、网格大小。框架是否支持处理用于分区的复合主键?
这里有几点需要注意:
JdbcCursorItemReader
不是线程安全的,因此它通常不用于分区场景。而是使用JdbcPagingItemReader
。- 您对数据进行分区的逻辑完全取决于您。虽然通过列中的值来执行此操作很有用,但它并不适用于所有用例(如本例)。在这个特定的用例中,您可能希望按
ROW_NUMBER()
或类似的东西进行分区,或者添加一列以按 进行分区