【问题标题】:PutDatabaseRecord is too slow with SQL SERVER使用 SQL SERVER 时 PutDatabaseRecord 太慢
【发布时间】:2021-03-15 22:40:11
【问题描述】:

我是使用 NiFi 的新手,我正在使用 PutDatabaseRecord 处理器将 Avro 格式的数据加载到 SQL Server 中。

我的数据流是这样的:

执行 SQL > 更新记录 > 放置数据库记录

但写入速度太慢(800 行/秒)。

在使用 MySQL 的其他环境中,我使用 jdbc 连接器中的一些选项对其进行了改进(useServerPrepStmts=false&rewriteBatchedStatements=true),但在 SQL Server 中没有类似的选项。

还有其他方法可以提高对 SQL SERVER 的写入吗?

谢谢,

【问题讨论】:

  • 通过设置Concurrent Tasks = 2Run Duration = 2s 尝试使用PutSQL 处理器,也可以尝试使用不同的值调整这些属性,以检查您是否获得了所需的结果。
  • 嘿维克拉姆辛!谢谢!我尝试使用 PutSQL 增加并发任务 = 2 和更大的值,运行持续时间 = 2 秒,它确实增加了写入(~1500 行/秒)。但我仍然认为与其他工具相比它很慢(例如:启用“批量插入”时写入约 8300 行/秒的 Pentaho DI)。

标签: sql-server apache-nifi mssql-jdbc


【解决方案1】:

尝试增加 PutDatabaseRecord 上的并发任务,并确保您的 DBCPConnectionPool 和数据库配置为允许足够的并发连接

【讨论】:

  • 谢谢斯代尔斯!我增加了并发任务 (2,4,6,8) 并将写入提高到 ~1550 行/秒,但死锁错误也增加了。在另一个遗留工具(Pentaho DI)中,我们可以选择启用“批量插入”,它确实提高了写入性能。 Nifi中是否有这样的选项?
  • 它们应该已经被批处理了,有一个配置选项来控制最大批处理大小 - 尝试使用该选项,看看它是否有任何区别。 nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/…
  • @LucasViniciusTeodoro 一些额外的信息也会有所帮助 - 你能用 nifi 的版本和你的流程截图更新你的问题
猜你喜欢
  • 2021-06-19
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多