Cosmos DB索引大小大于数据大小

时间:2018-05-29 22:07:17

标签: azure-cosmosdb

我在cosmos db中有一个分区集合,带有自定义索引策略(大约30个包含字段)和一致的索引模式。当收集数据大小达到高水平时,决定从收集中删除一些文档(~50k)并移动到其他存储。

删除后数据大小显着减少但索引大小保持不变甚至开始增加..这似乎很奇怪,因为我希望索引大小减少与数据大小相同。删除数据后是否删除了它?我应该做些额外的事情来删除索引吗?数据大小是否小于索引大小甚至可以吗?

azure集合指标的屏幕截图:
enter image description here

删除由js stored proc

完成
    function bulkDeleteByCondition() {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();
    var query = "SELECT root._self FROM root";
    var responseBody = {
        deleted: 0,
        continuation: true
    };

    tryQueryAndDelete();

    function tryQueryAndDelete(continuation) {
        var requestOptions = { continuation: continuation };

        var isAccepted = collection.queryDocuments(collectionLink, query, requestOptions, function (err, retrievedDocs, responseOptions) {
            if (err) {
                throw new Error(`Failed on collection.queryDocuments: ${err} for query ${query}`);
            }

            if (retrievedDocs.length > 0) {
                tryDelete(retrievedDocs);
            } else if (responseOptions.continuation) {.
                tryQueryAndDelete(responseOptions.continuation);
            } else {
                responseBody.continuation = false;
                response.setBody(responseBody);
            }
        });

        if (!isAccepted) {
            response.setBody(responseBody);
        }
    }

    function tryDelete(documents) {
        if (documents.length > 0) {
            var isAccepted = collection.deleteDocument(documents[0]._self, {}, function (err, responseOptions) {
                if (err) {
                    throw new Error(`Failed on collection.deleteDocument: ${err} for query ${query}`);
                }

                responseBody.deleted++;
                documents.shift();
                tryDelete(documents);
            });

            if (!isAccepted) {
                response.setBody(responseBody);
            }
        } else {
            tryQueryAndDelete();
        }
    }
    }

1 个答案:

答案 0 :(得分:0)

我想现在尺寸已经减小了。删除后似乎需要很长时间才能分配空间,这可能是由于碎片造成的。我有一个具有2天TTL的集合,尽管大多数文档结构都被排除在索引编制之外,但索引大小通常与文档几乎相同。