gpt4 book ai didi

wcf - 筛选 Azure 日志时性能不佳 - WCF 数据服务筛选器

转载 作者:行者123 更新时间:2023-12-02 06:49:31 25 4
gpt4 key购买 nike

Azure 诊断正在将 Windows 事件推送到存储表“WADWindowsEventLogsTable”中。

我想使用 VisualStudio(2015) 和 CloudExplorer 查询此存储表.

由于该表内容庞大,我无限期地等待结果..

这是一个查询示例:

EventId eq 4096 and Timestamp gt datetime'2016-06-24T08:20:00' and Timestamp lt datetime'2016-06-24T10:00:00'

我认为这个查询是正确的?

是否存在提高性能的方法?

  • 过滤结果列?
  • 仅返回前 X 个结果?
  • 其他有用的提示?

我知道更好的方法是编写脚本;例如使用Python,但我想尽可能多地使用UI..

<小时/>

(编辑)按照 Gaurav Mantri 回答,我使用这个小 C# 程序来构建我的查询。答案非常快,解决了我最初的性能问题:

   static void Main(string[] args)
{
string startDate = "24 June 2016 8:20:00 AM";
string endDate = "24 June 2016 10:00:00 AM";

string startPKey = convertDateToPKey(startDate);
string endPKey = convertDateToPKey(endDate);
Debug.WriteLine("(PartitionKey gt '" + startPKey + "'"
+ " and PartitionKey le '" + endPKey +"')"
+ " and (EventId eq 4096)"
);
}

private static string convertDateToPKey(string myDate)
{
System.DateTime dt = System.Convert.ToDateTime(myDate);
long dt2ticks = dt.Ticks;
string ticks = System.Convert.ToString(dt2ticks);
return "0" + ticks;
}

注意:对于像我这样一直在寻找如何将结果导出到 CSV 文件的人,您应该知道这个图标就是您的答案(而且它不是“撤消”;)):CloudExplorer-Table-Export action button

最佳答案

在您的查询中,您正在过滤未建立索引的 Timestamp 属性(仅对 PartitionKeyRowKey 属性建立索引)。因此,您的查询正在进行全表扫描(即从第一个记录开始直到找到匹配的记录),因此未进行优化。

为了避免全表扫描,请在查询中使用PartitionKey。对于 WADWindowsEventLogsTablePartitionKey 本质上表示以刻度为单位的日期/时间值。您需要做的是将要获取数据的日期/时间范围转换为刻度,在其前面添加 0,然后在查询中使用它。

因此您的查询将类似于:

(PartitionKey gt 'from date/time value in ticks prepended with 0' and PartitionKey le 'to date/time value in ticks prepended with 0') and (EventId eq 4096)

我前段时间写了一篇关于它的博客文章,您可能会觉得有用:http://gauravmantri.com/2012/02/17/effective-way-of-fetching-diagnostics-data-from-windows-azure-diagnostics-table-hint-use-partitionkey/

关于wcf - 筛选 Azure 日志时性能不佳 - WCF 数据服务筛选器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com