gpt4 book ai didi

performance - documentdb 字符串范围查询的预期性能如何?

转载 作者:行者123 更新时间:2023-12-03 04:26:29 27 4
gpt4 key购买 nike

我正在尝试使用 documentdb 对 IPv4 和 IPv6 网络分配数据进行范围搜索。由于 v6 数字太大,我将所有地址转换为固定长度的十六进制字符串并使用范围搜索。我有一个标准的 250GB 分区集合,消耗了大约 20GB。我有大约 250 万份文档。我的请求单位当前设置为 20,100。

我的问题是,即使我将 MaxDegreeOfParallelism 设置为 25,此集合上的范围搜索也非常慢(某些值需要 20 到 40 秒)。我正在使用范围搜索来查找单个 IP 地址。这是我正在使用的索引策略:

    {
"indexingMode": "lazy",
"automatic": true,
"includedPaths": [
{
"path": "/ipv4hexfrom/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": 8
}
]
},
{
"path": "/ipv4hexto/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": 8
}
]
},
{
"path": "/ipv6hexfrom/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": 32
}
]
},
{
"path": "/ipv6hexto/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": 32
}
]
}
],
"excludedPaths": [
{
"path": "/*"
}
]
}

这是一个示例查询:

SELECT * FROM c
WHERE c.ipv4hexfrom <= "cfd95803" AND c.ipv4hexto >= "cfd95803"

除了字符串索引之外,documentdb 还会自动将数字索引添加到我应用的策略中,大概是因为它看到看起来像数字的东西。结果,如果我查询一个十六进制值在十进制范围内的IP,查找时间就是一两秒。其他值似乎使用字符串索引并且非常慢。

我使用的是最新的1.12 SDK版本。

我可以将 IPv4 条目视为直接整数以获得更好的性能,但 IPv6 查找仍然会很慢。我宁愿避免将 IPv6 地址拆分为多个数字字段以获得我需要的性能。

最佳答案

精度越低,索引的性能就越慢。由于您正在进行 <= 和 >= 比较,因此您确实需要确保已将精度设置为最大量。

更多信息在这里:learn.microsoft.com "index precision"

就像这样。

{
"indexingMode": "lazy",
"automatic": true,
"includedPaths": [
{
"path": "/ipv4hexfrom/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
},
{
"path": "/ipv4hexto/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
},
{
"path": "/ipv6hexfrom/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
},
{
"path": "/ipv6hexto/?",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
}
]
}
],
"excludedPaths": [
{
"path": "/*"
}
]
}

关于performance - documentdb 字符串范围查询的预期性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634734/

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