The all-container inventory pass evaluates NoSQL containers independently of throughput
offers, including dedicated, shared-database and serverless containers.
It reads the latest non-null IndexUsage and DataUsage samples in a six-hour window
at five-minute grain, scoped by database and collection. ARM supplies indexing mode and
excluded paths. No Log Analytics is required.
| Configuration | Default |
|---|---|
low_ratio |
0.3 |
medium_ratio |
1.0 |
Divide index bytes by data bytes. A ratio strictly above 0.3 is Low; strictly above
1.0 is Medium. Exactly 0.3 is not detected; exactly 1.0 is Low. There is no High band.
An explicit indexing mode of none is not detected.
Missing, negative or non-finite sizes, or zero data size, are insufficient data. A real
zero index size with positive data is a valid zero ratio. User-authored exclusions do not
suppress a finding: their count is evidence. /_etag/? and /"_etag"/? are the two
default exclusions excluded from that count.
With 100 GiB of data, 30 GiB of index is not detected, 31 and 100 GiB are Low, and 101 GiB is Medium. A null newest bucket uses the latest populated sample rather than converting null to zero.
This is a storage-footprint warning, not proof of unused indexed paths, query-scan inefficiency, vector usage, or a measured write-RU saving. Composite, spatial and vector indexes may legitimately be large. Independently selected latest samples need not share a timestamp. Failed reads are errors.
Fresh live acceptance of the container-level CollectionName dimension on IndexUsage
remains pending; offline behavior and a threshold label do not close that limitation.
Use
index-exclude-unused
to review actual filter/sort requirements before changing the indexing policy.
Do not exclude paths solely because the ratio is large. CODA does not change indexes.