我想知道它是否a)有意义,b)是否可以为不同的实体使用不同的创建批量大小?
例子:
我有一张table A
有数百万行,但只有几个小列。对于这个表,我可以将批处理值设置为大约100甚至1000。
然而,另一张table B
包含一列,其中包含插入时填充的约千字节的数据。对于这个表,我认为应该只使用介于1和10之间的批处理值。
也许我可以用自己的实现 org.hibernate.engine.jdbc.batch.spi.BatchBuilder
我在哪里根据要插入的实体设置批量大小(通过设置hibernate属性 hibernate.jdbc.batch.builder
.)
听起来合乎逻辑吗?
1条答案
按热度按时间nhjlsmyf1#
你的方法似乎是正确的。默认实现
BatchBuilder
是BatchBuilderImpl
而且在buildBatch
方法传递的参数之一是BatchKey
. 这是一种格式(完全限定实体类名)#(操作类型>例如com.test.a#insert)。在自定义实现中,可以通过从包含实体类和相应批大小的外部文件加载配置来设置批大小。批大小将取决于batchkey的第一部分。