- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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'
我认为这个查询是正确的?
是否存在提高性能的方法?
我知道更好的方法是编写脚本;例如使用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 文件的人,您应该知道这个图标就是您的答案(而且它不是“撤消”;)):
最佳答案
在您的查询中,您正在过滤未建立索引的 Timestamp
属性(仅对 PartitionKey
和 RowKey
属性建立索引)。因此,您的查询正在进行全表扫描(即从第一个记录开始直到找到匹配的记录),因此未进行优化。
为了避免全表扫描,请在查询中使用PartitionKey
。对于 WADWindowsEventLogsTable
,PartitionKey
本质上表示以刻度为单位的日期/时间值。您需要做的是将要获取数据的日期/时间范围转换为刻度,在其前面添加 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/
我是一名优秀的程序员,十分优秀!