0

我在日志分析上运行此查询

                                        Perf
                                        | where TimeGenerated >= ago(5m) 
                                        | join kind = inner
                                            ( 
                                                Heartbeat  
                                                | where TimeGenerated >= ago(5m)
                                                | summarize arg_max(TimeGenerated, *) 

                                                by SourceComputerId
                                            ) on Computer
                                        | summarize arg_max(TimeGenerated, *) by SourceComputerId, CounterName
                                        | extend  Indicator = strcat(ObjectName,'-', CounterName)
                                        | summarize dict = make_dictionary
                                        (   
                                            pack
                                            (      
                                                  'WorkspaceId' 
                                                ,  TenantId
                                                ,  Indicator       
                                                ,  CounterValue
                                                ,  'TimeGenerated'   
                                                ,  TimeGenerated
                                                ,  'Computer'
                                                ,  Computer
                                            )
                                        )  by SourceComputerId
                                        | evaluate bag_unpack(dict)

但它有点慢。有什么方法可以优化它,我希望尽可能快的查询来达到相同的结果。

4

1 回答 1

1

如果不提及每条腿的数据大小(例如记录数)join和列的基数,这有点具有挑战性SourceComputerId

我建议您阅读涵盖多种优化技术的查询最佳实践文档,看看是否有帮助

更新:明确提及可能对您有帮助的最佳实践:(供您验证)

  • 使用连接运算符时 - 选择行数较少的表作为第一个(最左侧)。
  • 当左侧较小(最多 100,000 条记录)而右侧较大时,建议使用 hint.strategy=broadcast。
  • 当join的两边都太大并且join key的基数很高时,推荐使用hint.strategy=shuffle。
  • 当 summarise 运算符的 group by keys 具有高基数(最佳实践:100 万以上)时,建议使用 hint.strategy=shuffle。
于 2019-04-04T22:54:42.763 回答