你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Kusto 引入库的最佳做法

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

优先排队而不是直接引入

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

使用单个引入客户端实例

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

限制跟踪操作状态

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

优化吞吐量

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

因子 说明
数据大小 在大区块中执行时,引入效率更高。 建议将 100 MB 到 1 GB 的数据分批发送 (未压缩) 。
数据格式 CSV 是最快的引入格式。 对于相同数据量,JSON 可能需要 2 倍或 3 倍的时间。 有关详细信息,请参阅引入 支持的数据格式
表宽度 仅引入基本数据。 需要对每列进行编码和编制索引,这意味着较宽的表可能会降低吞吐量。 通过提供引入 映射来控制引入哪些字段。
源数据位置 避免跨区域读取可加快引入速度。
群集上的负载 当群集遇到高查询负载时,引入需要更长的时间才能完成。

注意

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

成本优化

使用 Kusto 客户端库将数据引入群集仍是最便宜且最可靠的选项。 我们敦促客户查看其引入方法,以优化成本,并利用 Azure 存储定价,使 Blob 事务具有显著的成本效益。

对于经济高效的引入:

  • 限制引入的数据区块数,例如文件、Blob 和流。
  • 引入最大 1GB 未压缩数据的大型区块。
  • 选择批处理。
  • 提供精确的未压缩数据大小,以避免额外的存储事务。
  • 避免将 设置为 FlushImmediatelytrue
  • 避免使用 或 drop-by盘区标记发送少量数据ingest-by

注意

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