Я пытаюсь отладить очень странную несоответствие между двумя отдельными коллекциями космических БД, которые по номинальной стоимости настроены одинаково.
Недавно мы изменили некоторый код, который выполнил следующий запрос.
OLD QUERY
SELECT * FROM c
WHERE c.ProductId = "CODE"
AND c.PartitionKey = "Manufacturer-GUID"
NEW QUERY
SELECT * FROM c
WHERE (c.ProductId = "CODE" OR ARRAY_CONTAINS(c.ProductIdentifiers, "CODE"))
AND c.PartitionKey = "Manufacturer-GUID"
Введение этого вызова Array_Contains
в производственной среде снизило производительность этого запроса с ~ 3 RU / s ==> ~ 6000 РУ / с.Но только в производственной среде.
И причина, по-видимому, в том, что в Производстве индекс не попадает в индекс.См. Выходные данные ниже для двух сред.
КОНФИГУРАЦИЯ DEV
Масштаб сбора: 2000 RU / s
Политика индекса: (Обратите внимание на путь исключения дляETags)
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Range",
"dataType": "String",
"precision": -1
},
{
"kind": "Spatial",
"dataType": "Point"
}
]
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
}
]
}
КОНФИГУРАЦИЯ PROD
Масштаб сбора: 10 000 RU / s
Политика индекса: (Обратите внимание на отсутствие пути исключения дляETags по сравнению с DEV)
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "Number",
"precision": -1
},
{
"kind": "Range",
"dataType": "String",
"precision": -1
},
{
"kind": "Spatial",
"dataType": "Point"
}
]
}
],
"excludedPaths": []
}
При сравнении результатов вывода в обеих средах DEV демонстрирует попадание в индекс, а PROD - отсутствие индекса, несмотря на отсутствие заметного различия между политиками индекса.
Результаты в DEV
Request Charge: 3.490 RUs
Showing Results: 1 - 1
Retrieved document count: 1
Retrieved document size: 3118 bytes
Output document count: 1
Output document size: 3167 bytes
Index hit document count: 1
Результаты в PROD
Request Charge: 6544.870 RUs
Showing Results: 1 - 1
Retrieved document count: 124199
Retrieved document size: 226072871 bytes
Output document count: 1
Output document size: 3167 bytes
Index hit document count: 0
Единственное, что мне удалось найти в Интернетев документах содержится ссылка на некоторые изменения, произошедшие в Cosmos Collection, в которых говорится, что «новый макет индекса» используется для более новых коллекций, но нет другого упоминания о макетах индекса как о концепции, которую я могу найти где-либо в документации.
https://docs.microsoft.com/en-us/azure/cosmos-db/index-types#index-kind
Кто-нибудь знает, куда я могу пойти с точки зрения отладки / решения этой проблемы.