为什么查询 azure 指标表这么慢,我该如何加快速度?

Why is it so slow to query azure metrics tables and how can I speed it up?

https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/diagnostics-template#wadmetrics-tables-in-storage

我正在尝试从其中一个 WADMETRIC 表中提取数据,但即使我设置一个查询来简单地查询最后一分钟的数据,它也需要几个小时才能 运行!

无论我是使用 Java sdk 还是从门户上的 logviewer 查询它,都会发生这种情况。

我做错了什么?我应该等这么久吗?

如有任何帮助,我们将不胜感激。

这是我的 java 代码。

        String connectionString = String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s", "imgoriginalblobs", "lAHAdJcjUcak48lvNwOoC2UztAcqD+hLX/YMdXq/qppQOgeuzQXTDMtYL3jx/oT+a0hxURqlF2Nv9Fza686s8g==");
        CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
        CloudTableClient cloudTableClient = account.createCloudTableClient();
        Calendar myCal = Calendar.getInstance();
        Date now = myCal.getTime();
        myCal.set(Calendar.MINUTE, Calendar.getInstance().get(Calendar.HOUR) - 1);
        Date theDate = myCal.getTime();
        String queryString = TableQuery.combineFilters(
                TableQuery.combineFilters(TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.GREATER_THAN_OR_EQUAL, theDate),
                        TableQuery.Operators.AND,
                        TableQuery.generateFilterCondition("CounterName", TableQuery.QueryComparisons.EQUAL, "/builtin/filesystem/freespace")),
                TableQuery.Operators.AND,
                TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.LESS_THAN_OR_EQUAL, now));
        TableQuery<TableMetric> query = TableQuery.from(TableMetric.class).where(queryString);

        CloudTable table = cloudTableClient.getTableReference("WADMetricsPT1MP10DV2S20191017");
        System.out.println(table.exists());
        System.out.println(table.getName());

        for (TableMetric entity : table.execute(query)) {
            extractPartitionKey(entity.getPartitionKey(), entity.getLast(), entity.getCounterName());

        }

还有一张我最近5分钟尝试查询数据的截图,这个已经挂了一个多小时了。

我认为问题是因为您没有指定分区键。因此它对可能存储在多个区域中的所有分区执行查询,这就是需要很长时间才能为您提供所需输出的原因。

一般来说,在 Azure table 存储中存储和检索指标有很多限制。查看 Azure Monitor 中的自定义指标,看看它是否可以满足您的方案和要求。

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-custom-overview