$planCacheStats
์ด ํ์ด์ง์ ๋ด์ฉ
์ ์
$planCacheStats
์ปฌ๋ ์ ์ ๋ํ ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ๋จ๊ณ๋ ๊ฐ ๊ณํ ์บ์ ํญ๋ชฉ์ ๋ํ ๋ฌธ์ ๋ฅผ ๋ฐํํฉ๋๋ค.
$planCacheStats
๋จ๊ณ๋ ํ์ดํ๋ผ์ธ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ฌ์ผ ํฉ๋๋ค. ์ด ๋จ๊ณ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค.{ $planCacheStats: { allHosts: <boolean> } } $planCacheStats
์ ๊ทธ๋ฆฌ๊ฒ์ด์ ๋จ๊ณ์๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ด ์์ต๋๋ค.์ต์ ์ค๋ชallHosts
$planCacheStats
์ ๊ทธ๋ฆฌ๊ฒ์ด์ ๋จ๊ณ๊ฐ ์ค๋ cluster์ ๋ ธ๋๋ฅผ ๋์์ผ๋ก ํ๋ ๋ฐฉ๋ฒ์ ๊ตฌ์ฑํฉ๋๋ค.true
์ธ ๊ฒฝ์ฐ,mongos
๋ ๋์ collection์์ ํ๋ ์ด์์ ์ฒญํฌ๋ฅผ ํฌํจํ๋ ์ํฅ์ ๋ฐ์ ๊ฐ ์ค๋์ ๋ํด ๋ชจ๋ ๋ ธ๋(ํ๋ผ์ด๋จธ๋ฆฌ ๋ฐ ์ธ์ปจ๋๋ฆฌ)์$planCacheStats
์ ๊ทธ๋ฆฌ๊ฒ์ด์ ๋จ๊ณ๋ฅผ ๋ธ๋ก๋์บ์คํธํฉ๋๋ค.false
์ธ ๊ฒฝ์ฐ$planCacheStats
์ ๊ทธ๋ฆฌ๊ฒ์ด์ ๋จ๊ณ๋ ์ฝ๊ธฐ ์ค์ (read preference) ์ ๋ฐ๋ฅด๊ณ ๋์ ๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ์์๋ง ๊ณํ ์บ์๋ฅผ ๊ฒ์ํฉ๋๋ค.
allHosts
๊ฐtrue
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ฐ ๋ ๋ฆฝํ ์๋ฒ๋ ํ์ดํ๋ผ์ธ ๊ตฌ๋ฌธ ๋ถ์ ์ค์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด ์ต์ ์ ์ค๋ฉ๋ cluster์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ๊ฐ์ ๋๋ค:
false
๋ฒ์ 7.1์ ์๋ก ์ถ๊ฐ๋์์ต๋๋ค.
๊ณ ๋ ค ์ฌํญ
ํ์ดํ๋ผ์ธ
$planCacheStats
๋ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ฌ์ผ ํฉ๋๋ค.
์ ํ ์ฌํญ
$planCacheStats
๋ค์์์๋ ํ์ฉ๋์ง ์์ต๋๋ค.$facet
์ง๊ณ ๋จ๊ณ
$planCacheStats
์ฝ๊ธฐ ๊ณ ๋ ค (read concern) ์์ค"local"
์ด(๊ฐ) ํ์ํฉ๋๋ค.
์ก์ธ์ค ์ ์ด
authorization
๋ฅผ ํตํด ์คํ๋๋ ์์คํ
์์ ์ฌ์ฉ์๋ ์ปฌ๋ ์
์ ๋ํ planCacheRead
๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
ํธ์ง
Queryable Encryption์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ $planCacheStats
๋จ๊ณ์์๋ ์์
์ด ์ ์์ ์ผ๋ก ์บ์๋๋๋ผ๋ ์ํธํ๋ ์ปฌ๋ ์
์ ๋ํ ์์
์ ์๋ตํฉ๋๋ค.
์ฝ๊ธฐ ์ค์
allHosts
์ต์
์ด false
๋ก ์ค์ ํ๋ค ๊ฒฝ์ฐ $planCacheStats
๋ ์ฝ๊ธฐ ์ค์ (read preference) ์ ๋ฐ๋ผ ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ๋ฐํํ ํธ์คํ
ํ๋ค ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๋ณต์ ๋ณธ ์ธํธ์ ๋ค๋ฅธ ๋
ธ๋๋ฅผ ๋์์ผ๋ก ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋
ธ๋๋ ์๋ก ๋ค๋ฅธ ์ฝ๊ธฐ ๋ช
๋ น์ ์์ ํ๊ณ ๋ค๋ฅธ ๋
ธ๋์ ๋ค๋ฅธ ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ณต์ ๋ณธ ์ธํธ ๋๋ ๋ถํ ๋ ํด๋ฌ์คํฐ์์ $planCacheStats
๋ฅผ ์คํํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ๊ท์น์ ๋ฐ๋ฆ
๋๋ค. ์ฆ, ๋ณต์ ๋ณธ ์ธํธ์์๋ ๋ณต์ ๋ณธ ์ธํธ์ ํ ๋
ธ๋๋ก๋ถํฐ๋ง ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ์์งํ๊ณ , ์ค๋ ํด๋ฌ์คํฐ์์๋ ๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋
ธ๋๋ก๋ถํฐ๋ง ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ์์งํ๋ ์์
์
๋๋ค.
์ถ๋ ฅ
๋ฒ์ 7.0์์ ๋ณ๊ฒฝ๋์์ต๋๋ค.
$planCacheStats
์ ์ถ๋ ฅ์ ์ฟผ๋ฆฌ๋ฅผ ์๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฟผ๋ฆฌ ์์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. $planCacheStats
์ version
ํ๋ ๊ฐ์ ์ฌ์ฉ๋ ์ฟผ๋ฆฌ ์์ง์ ๋ํ๋
๋๋ค.
1
์ ํด๋์ ์์ง์ด ์ฌ์ฉ๋์์์ ๋ํ๋ ๋๋ค.2
๋ ์ฌ๋กฏ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์คํ ์์ง ์ด ์ฌ์ฉ๋์์์ ๋ํ๋ ๋๋ค.
ํด๋์ ์คํ ์์ง ์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ $planCacheStats
๋ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ๋ฐํํฉ๋๋ค.
{ "version" : 1, "createdFromQuery" : <document>, "planCacheShapeHash" : <hexadecimal string>, "planCacheKey" : <hexadecimal string>, "isActive" : <boolean>, "works" : <NumberLong>, "cachedPlan" : { "stage" : <STAGE1>, "filter" : <document>, "inputStage" : { "stage" : <STAGE2>, ... } }, "timeOfCreation" : <date>, "creationExecStats" : [ // Exec Stats Document for each candidate plan { "nReturned" : <num>, "executionTimeMillisEstimate" : <num>, "totalKeysExamined" : <num>, "totalDocsExamined" :<num>, "executionStages" : { "stage" : <STAGE A>, ... "inputStage" : { "stage" : <STAGE B>, ... } } }, ... ], "candidatePlanScores" : [ <number>, ... ], "indexFilterSet" : <boolean>, "estimatedSizeBytes" : <num>, "querySettings" : <document>, "host" : <string>, "shard" : <string> }
๊ฐ ๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฟผ๋ฆฌ ๊ณํ ๋ฐ ์คํ ํต๊ณ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
ํ๋ | ์ค๋ช
| |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ์ฟผ๋ฆฌ๋ฅผ ์๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฟผ๋ฆฌ ์์ง์ ๋ํ๋ด๋ ์ซ์์ ๋๋ค.
| |||||||||||||||||||||||||
| ์ด ์บ์ ํญ๋ชฉ์ ์์ฑํ ํน์ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ ๋ฌธ์์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| |||||||||||||||||||||||||
| ํญ๋ชฉ์ด ํ์ฑ ์ํ์ธ์ง ๋นํ์ฑ ์ํ์ธ์ง๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ
๊ณํ ์บ์ ํญ๋ชฉ ์ํ๋ฅผ ์ฐธ์กฐํ์ธ์. | |||||||||||||||||||||||||
| ์ฟผ๋ฆฌ ํํ string ์ ํด์๋ฅผ ๋ํ๋ด๋ 16์ง์ ์
๋๋ค. MongoDB 8.0 ๋ถํฐ ๊ธฐ์กด | |||||||||||||||||||||||||
| ์ด ์ฟผ๋ฆฌ ์ ์ฐ๊ฒฐ๋ ๊ณํ ์บ์ ํญ๋ชฉ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ํค์ ํด์๋ฅผ ๋ํ๋ด๋ 16์ง์ string ์
๋๋ค. ๊ณํ ์บ์ ํค๋ ๊ณํ ์บ์ ์ฟผ๋ฆฌ ํํ ์ ํด๋น ํํ์ ๋ํด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ๋ฑ์ค ๋ชจ๋์ ํจ์์
๋๋ค. | |||||||||||||||||||||||||
| ์บ์๋ ๊ณํ์ ์ธ๋ถ ์ ๋ณด์
๋๋ค. | |||||||||||||||||||||||||
| ์ฟผ๋ฆฌ ํ๋๋๊ฐ ํ๋ณด ๊ณํ์ ํ๊ฐํ๋ ์๋ ๊ธฐ๊ฐ ๋์ ์ฟผ๋ฆฌ ์คํ ๊ณํ์์ ์ํํ '์์
๋จ์'์ ์์
๋๋ค. ์์ธํ ๋ด์ฉ์ | |||||||||||||||||||||||||
| ํญ๋ชฉ์ ์์ฑ ์๊ฐ์ ๋๋ค. | |||||||||||||||||||||||||
| ์คํ ํต๊ณ ๋ฌธ์์ ๋ฐฐ์ด. ๋ฐฐ์ด์๋ ๊ฐ ํ๋ณด ๊ณํ์ ๋ํ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์คํ ํต๊ณ์ ๋ํ ์์ธํ ๋ด์ฉ์ | |||||||||||||||||||||||||
|
| |||||||||||||||||||||||||
| ๊ณํ ์บ์ ์ฟผ๋ฆฌ ํํ ์ ๋ํ ์ธ๋ฑ์ค ํํฐํ๋ค๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋๋ค. | |||||||||||||||||||||||||
| ๊ณํ ์บ์ ํญ๋ชฉ์ ์์ ํฌ๊ธฐ(๋ฐ์ดํธ)์ ๋๋ค. | |||||||||||||||||||||||||
| ๋ฒ์ 8.0์ ์ถ๊ฐ ๋์์ต๋๋ค. ์ด์ ์
| |||||||||||||||||||||||||
| ๊ณํ ์บ์ ์ ๋ณด๊ฐ ๋ฐํ๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์์ ์คํ ํ๋ ๊ฒฝ์ฐ ์์ ์ ๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ ์ ๋จ์ผ ๋ฉค๋ฒ ๋ก๋ถํฐ ๊ณํ ์บ์ ํญ๋ชฉ ์ ๋ณด ๋ฅผ ๋ฐํ ํฉ๋๋ค . ์ด ๋ฉค๋ฒ๋ ์ค๋ ๋ฐ ํธ์คํ ํ๋คํ๋๋ก ์๋ณ๋ฉ๋๋ค. ํธ์ง์ ์ฐธ์กฐ ํธ์ง. | |||||||||||||||||||||||||
| ๊ฐ ์บ์ ํญ๋ชฉ์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์คํํ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. |
์ฌ๋กฏ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์คํ ์์ง์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ $planCacheStats
๋ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "version" : 2, "planCacheShapeHash" : <hexadecimal string>, "planCacheKey" : <hexadecimal string>, "isActive" : <boolean>, "works" : <NumberLong>, "cachedPlan" : { "slots" : <string>, "stages": <string> }, "indexFilterSet" : <boolean>, "estimatedSizeBytes" : <num>, "querySettings" : <document>, "host" : <string> }
๊ฐ ๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฟผ๋ฆฌ ๊ณํ ๋ฐ ์คํ ํต๊ณ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
ํ๋ | ์ค๋ช
| |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ์ฟผ๋ฆฌ๋ฅผ ์๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฟผ๋ฆฌ ์์ง์ ๋ํ๋ด๋ ์ซ์์ ๋๋ค.
| |||||||||||||||||||||||||
| ์ฟผ๋ฆฌ ํํ string ์ ํด์๋ฅผ ๋ํ๋ด๋ 16์ง์ ์
๋๋ค. MongoDB 8.0 ๋ถํฐ ๊ธฐ์กด | |||||||||||||||||||||||||
| ์ด ์ฟผ๋ฆฌ ์ ์ฐ๊ฒฐ๋ ๊ณํ ์บ์ ํญ๋ชฉ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ํค์ ํด์๋ฅผ ๋ํ๋ด๋ 16์ง์ string ์
๋๋ค. ๊ณํ ์บ์ ํค๋ ๊ณํ ์บ์ ์ฟผ๋ฆฌ ํํ ์ ํด๋น ํํ์ ๋ํด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ๋ฑ์ค ๋ชจ๋์ ํจ์์
๋๋ค. | |||||||||||||||||||||||||
| ํญ๋ชฉ์ด ํ์ฑ ์ํ์ธ์ง ๋นํ์ฑ ์ํ์ธ์ง๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ
๊ณํ ์บ์ ํญ๋ชฉ ์ํ๋ฅผ ์ฐธ์กฐํ์ธ์. | |||||||||||||||||||||||||
| ์ฟผ๋ฆฌ ํ๋๋๊ฐ ํ๋ณด ๊ณํ์ ํ๊ฐํ๋ ์๋ ๊ธฐ๊ฐ ๋์ ์ฟผ๋ฆฌ ์คํ ๊ณํ์์ ์ํํ '์์
๋จ์'์ ์์
๋๋ค. ์์ธํ ๋ด์ฉ์ | |||||||||||||||||||||||||
| ์บ์๋ ๊ณํ์ ์ธ๋ถ ์ ๋ณด์
๋๋ค. | |||||||||||||||||||||||||
| ๊ณํ ์บ์ ์ฟผ๋ฆฌ ํํ ์ ๋ํ ์ธ๋ฑ์ค ํํฐํ๋ค๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋๋ค. | |||||||||||||||||||||||||
| ๊ณํ ์บ์ ํญ๋ชฉ์ ์์ ํฌ๊ธฐ(๋ฐ์ดํธ)์ ๋๋ค. | |||||||||||||||||||||||||
| ๋ฒ์ 8.0์ ์ถ๊ฐ ๋์์ต๋๋ค. ์ด์ ์
| |||||||||||||||||||||||||
| ๊ณํ ์บ์ ์ ๋ณด๊ฐ ๋ฐํ๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์์ ์คํ ํ๋ ๊ฒฝ์ฐ ์์ ์ ๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ ์ ๋จ์ผ ๋ฉค๋ฒ ๋ก๋ถํฐ ๊ณํ ์บ์ ํญ๋ชฉ ์ ๋ณด ๋ฅผ ๋ฐํ ํฉ๋๋ค . ์ด ๋ฉค๋ฒ๋ ์ค๋ ๋ฐ ํธ์คํ ํ๋คํ๋๋ก ์๋ณ๋ฉ๋๋ค. ํธ์ง์ ์ฐธ์กฐ ํธ์ง. |
์์
์ด ์น์
์ ์์์์๋ ๋ค์์ orders
collection์ ์ฌ์ฉํฉ๋๋ค.
db.orders.insertMany( [ { "_id" : 1, "item" : "abc", "price" : NumberDecimal("12"), "quantity" : 2, "type": "apparel" }, { "_id" : 2, "item" : "jkl", "price" : NumberDecimal("20"), "quantity" : 1, "type": "electronics" }, { "_id" : 3, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : 5, "type": "apparel" }, { "_id" : 4, "item" : "abc", "price" : NumberDecimal("8"), "quantity" : 10, "type": "apparel" }, { "_id" : 5, "item" : "jkl", "price" : NumberDecimal("15"), "quantity" : 15, "type": "electronics" } ] )
์ปฌ๋ ์ ์ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ญ๋๋ค.
db.orders.createIndex( { item: 1 } ); db.orders.createIndex( { item: 1, quantity: 1 } ); db.orders.createIndex( { quantity: 1 } ); db.orders.createIndex( { quantity: 1, type: 1 } ); db.orders.createIndex( { item: 1, price: 1 }, { partialFilterExpression: { price: { $gte: NumberDecimal("10")} } } );
์ฐธ๊ณ
์ธ๋ฑ์ค { item: 1, price: 1 }
์ ๋ถ๋ถ ์ธ๋ฑ์ค์ด๋ฉฐ price
ํ๋๊ฐ NumberDecimal("10")
๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ธ๋ฑ์ค๋ ๋ฌธ์๋ง ์ธ๋ฑ์ฑํฉ๋๋ค.
collection์ ๋ํด ๋ช ๊ฐ์ง ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
db.orders.find( { item: "abc", price: { $gte: NumberDecimal("10") } } ) db.orders.find( { item: "abc", price: { $gte: NumberDecimal("5") } } ) db.orders.find( { quantity: { $gte: 20 } } ) db.orders.find( { quantity: { $gte: 5 }, type: "apparel" } )
์์ ์ฟผ๋ฆฌ๋ ์ฌ๋กฏ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์คํ ์์ง์ ์ฌ์ฉํ์ฌ ์๋ฃ๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์บ์์ ๋ชจ๋ ํญ๋ชฉ์ ํด๋นํ๋ ์ ๋ณด ๋ฐํํ๊ธฐ
๋ค์ ์ง๊ณ ํ์ดํ๋ผ์ธ์ $planCacheStats
๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์
์ ๊ณํ ์บ์ ํญ๋ชฉ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
db.orders.aggregate( [ { $planCacheStats: { } } ] )
์ถ๋ ฅ:
[ { // Plan Cache Entry 1 version: '2', planCacheShapeHash: '478AD696', planCacheKey: '21AE23AD', isActive: true, works: Long("7"), timeOfCreation: ISODate("2023-05-22T20:33:49.031Z"), cachedPlan: { ... }, indexFilterSet: false, isPinned: false, estimatedSizeBytes: Long("8194"), host: 'mongodb1.example.net:27018' }, { // Plan Cache Entry 2 version: '2', planCacheShapeHash: '3D8AFDC6', planCacheKey: '1C2C4360', isActive: true, works: Long("6"), timeOfCreation: ISODate("2023-05-22T20:33:50.584Z"), cachedPlan: { ... }, indexFilterSet: false, isPinned: false, estimatedSizeBytes: Long("11547"), host: 'mongodb1.example.net:27018' }, { // Plan Cache Entry 3 version: '2', planCacheShapeHash: '27285F9B', planCacheKey: '20BB9404', isActive: true, works: Long("1"), timeOfCreation: ISODate("2023-05-22T20:33:49.051Z"), cachedPlan: { ... }, indexFilterSet: false, isPinned: false, estimatedSizeBytes: Long("7406"), host: 'mongodb1.example.net:27018' }, { // Plan Cache Entry 4 version: '2', planCacheShapeHash: '478AD696', planCacheKey: 'B1435201', isActive: true, works: Long("5"), timeOfCreation: ISODate("2023-05-22T20:33:49.009Z"), cachedPlan: { ... }, indexFilterSet: false, isPinned: false, estimatedSizeBytes: Long("7415"), host: 'mongodb1.example.net:27018' } ],
๊ฒฝ๊ณ
MongoDB 8.0 ๋ถํฐ ๊ธฐ์กด queryHash
ํ๋ ์ ์ด๋ฆ์ด planCacheShapeHash
๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ MongoDB ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ planCacheShapeHash
queryHash
๊ฐ ํ์๋ฉ๋๋ค.
์ฟผ๋ฆฌ ํด์์ ๋ํ ์บ์ ํญ๋ชฉ ์ธ๋ถ ์ ๋ณด ์ฐพ๊ธฐ
ํน์ ์ฟผ๋ฆฌ ํด์์ ๋ํ ๊ณํ ์บ์ ์ ๋ณด๋ฅผ ๋ฐํํ๋ ค๋ฉด $planCacheStats
๋จ๊ณ ๋ค์์ planCacheKey
ํ๋ ์ $match
๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
๋ค์ ์ง๊ณ ํ์ดํ๋ผ์ธ์ $planCacheStats
์ ์ด์ด $match
๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ฟผ๋ฆฌ ํด์์ ๋ํ ํน์ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค.
db.orders.aggregate( [ { $planCacheStats: { } }, { $match: { planCacheKey: "B1435201"} } ] )
์ถ๋ ฅ:
[ { version: '2', planCacheShapeHash: '478AD696', planCacheKey: 'B1435201', isActive: true, works: Long("5"), timeOfCreation: ISODate("2023-05-22T20:33:49.009Z"), cachedPlan: { slots: '$$RESULT=s11 env: { s3 = 1684787629009 (NOW), s6 = Nothing, s5 = Nothing, s1 = TimeZoneDatabase(Asia/Kuwait...Etc/UCT) (timeZoneDB), s10 = {"item" : 1, "price" : 1}, s2 = Nothing (SEARCH_META) }', stages: '[2] nlj inner [] [s4, s7, s8, s9, s10] \n' + ' left \n' + ' [1] cfilter {(exists(s5) && exists(s6))} \n' + ' [1] ixseek s5 s6 s9 s4 s7 s8 [] @"358822b7-c129-47b7-ad7f-40017a51b03c" @"item_1_price_1" true \n' + ' right \n' + ' [2] limit 1 \n' + ' [2] seek s4 s11 s12 s7 s8 s9 s10 none none [] @"358822b7-c129-47b7-ad7f-40017a51b03c" true false \n' }, indexFilterSet: false, isPinned: false, estimatedSizeBytes: Long("7415"), host: 'mongodb1.example.net:27018' } ]
๊ฒฝ๊ณ
MongoDB 8.0 ๋ถํฐ ๊ธฐ์กด queryHash
ํ๋ ์ ์ด๋ฆ์ด planCacheShapeHash
๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ MongoDB ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ planCacheShapeHash
queryHash
๊ฐ ํ์๋ฉ๋๋ค.