为什么查询天蓝色指标表这么慢,我如何加快查询速度?

时间:2019-10-24 14:47:25

标签: azure azure-storage azure-table-storage azure-java-sdk

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分钟内查询数据的屏幕快照,该屏幕截图已经暂停了一个多小时。

Trying to query WADMETRICS table

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

通常,在Azure表存储中存储和检索指标存在很多限制。查看Azure Monitor中的自定义指标,看看是否可以满足您的方案和要求。

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