Kusto 引入库的最佳做法

适用于:✅Azure 数据资源管理器

本文介绍使用 Kusto 引入库进行数据引入的最佳做法。

首选排队还不是直接引入

对于生产方案,请使用排队引入客户端。 有关详细信息,请参阅排队引入直接引入

使用单个引入客户端实例

Kusto 引入客户端实现是线程安全的,而且是可重用的。 对于每个目标数据库,每个进程使用已排队或直接引入客户端的单个实例。 运行多个实例可能会使数据库过载,导致数据库无响应或响应有效请求的速度变慢。

限制跟踪操作状态

对于大量数据流,请限制对引入请求使用积极通知。 过度跟踪可能会导致引入延迟增加,甚至完全无响应。 有关详细信息,请参阅操作状态

优化吞吐量

规划引入管道时,请考虑以下因素,因为它们可能对引入吞吐量产生重大影响。

因子 说明
数据大小 在大型区块中操作时,引入效果更高。 建议批量发送 100 MB 到 1 GB 的数据(未压缩)。
数据格式 首选 CSV 或 PSV、TSV 等任何分隔文本格式,以及 Parquet、JSON 或 AVRO 等数据格式,这些格式经过优化,可实现最大吞吐量。 有关详细信息,请参阅引入支持的数据格式
表宽度 只引入必要的数据。 需要对每一列进行编码和索引,这意味着表越宽,吞吐量可能越低。 通过提供引入映射来控制要引入哪些字段。
源数据位置 避免跨区域读取可加快引入速度。
在数据库上加载 当数据库遇到高查询负载时,引入需要更长的时间才能完成。

注意

排队引入客户端将大型数据集拆分为区块并聚合它们,如果在引入之前无法对数据进行批处理,则这非常有用。

成本优化

使用 Kusto 客户端库将数据引入数据库仍然是成本最低且最可靠的选项。 强烈建议客户查看其引入方法,以针对成本进行优化并利用 Azure 存储定价,该定价将使 blob 事务明显经济高效。

若要实现经济高效的引入:

  • 限制引入的数据区块数,例如文件、blob 和流。
  • 引入较大的区块(最多 1 GB 未压缩的数据)。
  • 选择使用批处理。
  • 提供确切的未压缩数据大小,以避免额外的存储事务。
  • 不要将 FlushImmediately 设置为 true
  • 避免使用 ingest-bydrop-by 盘区标记发送少量数据。

注意

过度使用最后两种方法可能会中断数据聚合,导致额外的存储事务,并损害引入和查询性能。