์ƒ‰์ธ ์ž๋ฌธ ์‚ฌ์šฉ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” PostgreSQL์šฉ Cloud SQL ์ƒ‰์ธ ๋„์šฐ๋ฏธ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ณ  ์ƒ‰์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋ณด๊ณ  ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ์ƒ‰์ธ ์ž๋ฌธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ธ ์ž๋ฌธ์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋˜๋Š” ์ƒˆ๋กœ์šด ์ƒ‰์ธ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ธ ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋ฐ ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ธ ์ž๋ฌธ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

์ƒ‰์ธ ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒ‰์ธ์„ ๋งŒ๋“œ๋Š” SQL ๋ช…๋ น์–ด๋กœ ์ƒ‰์ธ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์ƒ ์Šคํ† ๋ฆฌ์ง€ ํฌ๊ธฐ ๋ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ƒ‰์ธ์˜ ์˜ํ–ฅ๊ณผ ๊ฐ™์ด ๊ถŒ์žฅ ์ƒ‰์ธ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ƒ‰์ธ ์ž๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„, ์Šคํ‚ค๋งˆ ์ด๋ฆ„, ํ…Œ์ด๋ธ” ์ด๋ฆ„, ์—ด ์ด๋ฆ„์ด ํฌํ•จ๋œ CREATE INDEX ๋ช…๋ น์–ด๋ฅผ ์ €์žฅํ•˜๊ณ  ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ ๋œ ์ฟผ๋ฆฌ๋Š” ๋ชจ๋“  ๋ฆฌํ„ฐ๋Ÿด์ด ์ œ๊ฑฐ๋œ ๋ชจ๋“  ์ •๊ทœํ™”๋œ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์ƒ‰์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ €์žฅ ์ค‘์— ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

PostgreSQL์šฉ Cloud SQL ์ƒ‰์ธ ์ž๋ฌธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒ‰์ธ ์ž๋ฌธ์€ CREATE INDEX ๊ถŒ์žฅ์‚ฌํ•ญ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ‰์ธ ๋„์šฐ๋ฏธ๋Š” ๋‹ค์Œ ๊ตฌ์„ฑ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Cloud SQL Enterprise ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค
    • ์ฝ๊ธฐ ๋ณต์ œ๋ณธ ์ธ์Šคํ„ด์Šค

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ์„ ๋ฐ›์œผ๋ ค๋ฉด Cloud SQL Enterprise Plus ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  Cloud SQL ์ธ์Šคํ„ด์Šค์— Cloud SQL Enterprise Plus ๋ฒ„์ „์˜ ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์—ญํ•  ๋ฐ ๊ถŒํ•œ

์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ์„ ๋ฐ›๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Cloud SQL ๋ทฐ์–ด(roles/cloudsql.viewer) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ์„ ๋ฐ›๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ๊ถŒํ•œ์„ ๋ณด๋ ค๋ฉด ํ•„์ˆ˜ ๊ถŒํ•œ ์„น์…˜์„ ํŽผ์น˜์„ธ์š”.

ํ•„์ˆ˜ ๊ถŒํ•œ

์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ์„ ๋ฐ›์œผ๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • databaseinsights.recommendations.query
  • databaseinsights.resourceRecommendations.query

์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ‰์ธ ์ž๋ฌธ ๊ถŒ์žฅ์‚ฌํ•ญ ์‚ฌ์šฉ ์„ค์ •

์ƒ‰์ธ ๋„์šฐ๋ฏธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

    .
  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. .
  3. ๊ตฌ์„ฑ ํƒ€์ผ์—์„œ ๊ตฌ์„ฑ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. ์ฟผ๋ฆฌ ํ†ต๊ณ„ ์‚ฌ์šฉ ์„ค์ •์ด ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  6. ์•„์ง ์„ ํƒํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด Enterprise Plus ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  7. ์ƒ‰์ธ ๋„์šฐ๋ฏธ ์‚ฌ์šฉ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  8. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ƒ‰์ธ ์ž๋ฌธ ๊ถŒ์žฅ์‚ฌํ•ญ ์‚ฌ์šฉ ์ค‘์ง€

์ƒ‰์ธ ๋„์šฐ๋ฏธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ตฌ์„ฑ ํƒ€์ผ์—์„œ ๊ตฌ์„ฑ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. ์ƒ‰์ธ ๋„์šฐ๋ฏธ ์‚ฌ์šฉ ์„ค์ • ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ ๋ณด๊ธฐ

Cloud SQL์€ ์ƒ‰์ธ ๋„์šฐ๋ฏธ ๋ถ„์„์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ž๋™ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ธ ๋„์šฐ๋ฏธ ์ถ”์ฒœ์„ ๋ณด๋ ค๋ฉด ์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์–ธ์ œ๋“ ์ง€ ์ƒ‰์ธ ๋„์šฐ๋ฏธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ํ…Œ์ด๋ธ”๋กœ ๋ณด๊ณ  ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ฃผ๋ฌธํ˜• ๋ถ„์„ ๋ฐ ๋ณด๊ณ ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ถ”์ฒœ ๋ณด๊ธฐ ๋ฐ ํ•„ํ„ฐ๋ง

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒ‰์ธ ๋„์šฐ๋ฏธ ๊ถŒ์žฅ์‚ฌํ•ญ์€ ์ตœ์ƒ์œ„ ์ฟผ๋ฆฌ ๋ฐ ํƒœ๊ทธ ์„น์…˜์˜ ๊ถŒ์žฅ์‚ฌํ•ญ ์—ด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. ์„ ํƒ์‚ฌํ•ญ: CREATE INDEX ์ถ”์ฒœ์ด ์žˆ๋Š” ์ฟผ๋ฆฌ๋งŒ ๋ณด๋ ค๋ฉด ์ถ”์ฒœ: ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ ๋ณด๊ธฐ

ํŠน์ • ์ฟผ๋ฆฌ์˜ ์ƒ‰์ธ ์ถ”์ฒœ์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒ์œ„ ์ฟผ๋ฆฌ ๋ฐ ํƒœ๊ทธ ์„น์…˜์—์„œ ์ฟผ๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ถ”์ฒœ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์Œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์„ ํƒํ•œ ์ฟผ๋ฆฌ์˜ ์ถ”์ฒœ์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ฟผ๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
      • ์„ฑ๋Šฅ ์˜ํ–ฅ(๋†’์Œ, ์ค‘๊ฐ„, ๋‚ฎ์Œ): ๋ชจ๋“  ๊ถŒ์žฅ ์ƒ‰์ธ์ด ์ƒ์„ฑ๋œ ํ›„์˜ ์˜ˆ์ƒ ์ฟผ๋ฆฌ ์†๋„์ž…๋‹ˆ๋‹ค.
      • ๊ถŒ์žฅ์‚ฌํ•ญ: ์ƒ‰์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      • ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ…Œ์ด๋ธ”: ์ƒ‰์ธ์ด ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ…Œ์ด๋ธ” ์ˆ˜์ž…๋‹ˆ๋‹ค.
      • ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์˜ˆ์ƒ ์Šคํ† ๋ฆฌ์ง€: ๋ชจ๋“  ๊ถŒ์žฅ ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์˜ˆ์ƒ ์Šคํ† ๋ฆฌ์ง€ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
      • ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ฟผ๋ฆฌ ์ˆ˜: ์›Œํฌ๋กœ๋“œ์—์„œ ์ƒ‰์ธ ๊ถŒ์žฅ์‚ฌํ•ญ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ด ์ฟผ๋ฆฌ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ƒ‰์ธ์€ ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํŠน์ • ์ฟผ๋ฆฌ์˜ ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋ทฐ๋กœ ๊ถŒ์žฅ์‚ฌํ•ญ ๋ณด๊ธฐ

๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋‹ค์Œ ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • google_db_advisor_recommended_indexes: ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ถŒ์žฅ๋˜๋Š” ์ƒˆ๋กœ์šด ์ƒ‰์ธ์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์ƒ‰์ธ์— ํ•„์š”ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์˜ˆ์ƒ ๊ฐ’๊ณผ ๊ฐ ์ƒ‰์ธ์ด ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ ์ˆ˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • google_db_advisor_workload_report: ์ž๋ฌธ์ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์ƒˆ ์ƒ‰์ธ์„ ๊ถŒ์žฅํ•˜๋Š” ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ–‰์—๋Š” ๊ด€๋ จ ์ฟผ๋ฆฌ์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์š”์•ฝ๋˜์–ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ์ตœ์‹  ์ƒ‰์ธ ๊ถŒ์žฅ ๋ถ„์„์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

SELECT * FROM google_db_advisor_recommended_indexes;

์ƒ‰์ธ ์ž๋ฌธ์˜ ์ตœ์‹  ๋ถ„์„์œผ๋กœ ๊ถŒ์žฅ์‚ฌํ•ญ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ํ–‰์ด ์—†๋Š” ํ…Œ์ด๋ธ”์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ณด๊ณ ์„œ๊ฐ€ ๋ชจ๋‘ ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ทฐ๋กœ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ •๋ณด๋ฅผ ํ•„ํ„ฐ๋ง ๋˜๋Š” ์ œ๊ณตํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ถŒ์žฅ ์ƒ‰์ธ์„ ์™„์ „ํžˆ ์—ฐ๊ฒฐ๋œ ์ฟผ๋ฆฌ์™€ ์Œ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋ ค๋ฉด ํ•ด๋‹น query_id ์—ด์—์„œ google_db_advisor_workload_report ๋ฐ google_db_advisor_workload_statements ๋ทฐ๋ฅผ ์กฐ์ธํ•ฉ๋‹ˆ๋‹ค.

SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;

์ˆ˜๋™์œผ๋กœ ์ƒ‰์ธ ๋ถ„์„ ์š”์ฒญ

์ƒ‰์ธ ์ž๋ฌธ์˜ ๋‹ค์Œ ์˜ˆ์ •๋œ ๋ถ„์„์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  PostgreSQL์šฉ Cloud SQL์ด ๋ถ„์„์„ ์ฆ‰์‹œ ์‹คํ–‰ํ•˜๊ณ  ๋ณด๊ณ ์„œ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL์šฉ Cloud SQL์˜ ๊ฒฝ์šฐ ์ƒ‰์ธ ์ž๋ฌธ์ด ์ˆ˜๋™ ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•œ ํ›„ ์ตœ์†Œ 15๋ถ„ ์ด์ƒ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‹ค์Œ SQL ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

SELECT * FROM google_db_advisor_recommend_indexes();

๋ถ„์„์ด ์™„๋ฃŒ๋˜๋ฉด PostgreSQL์šฉ Cloud SQL์ด ๊ถŒ์žฅ๋˜๋Š” ์ƒ‰์ธ์— ๋Œ€ํ•œ ์„ค๋ช… ๋ฐ ์˜ˆ์ƒ ์Šคํ† ๋ฆฌ์ง€ ์š”๊ตฌ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ณด๊ณ ์„œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์„์œผ๋กœ ๊ถŒ์žฅํ•  ์ƒˆ ์ƒ‰์ธ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋ทฐ์— ํ–‰์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์—ญํ• ์€ ํ‘œ์‹œ๋˜๋Š” ๊ถŒ์žฅ์‚ฌํ•ญ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PostgreSQL์šฉ Cloud SQL์€ ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์ฟผ๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ƒ‰์ธ ๊ถŒ์žฅ์‚ฌํ•ญ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ฒœ ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ

์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋ทฐ์—์„œ ๊ถŒ์žฅ ์ƒ‰์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒ์žฅ ์ƒ‰์ธ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜๋ณ„ ์ƒ์œ„ ํฌ๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ์ฟผ๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ํŠน์ • ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ชจ๋“  ์ƒ‰์ธ ๋ช…๋ น์–ด ๋ณต์‚ฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. CREATE INDEX ๋ช…๋ น์–ด๊ฐ€ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.
  7. ๋ช…๋ น์ค„์—์„œ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  8. ๊ถŒ์žฅ ์ƒ‰์ธ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    CREATE INDEX ON "public"."demo_order" ("customer_id");

google_db_advisor_recommended_indexes ๋ทฐ์˜ index ์—ด์—๋Š” ๊ฐ ํ–‰์—์„œ ๊ถŒ์žฅ๋˜๋Š” ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์™„์ „ํ•œ PostgreSQL CREATE INDEX DDL ๋ฌธ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ–‰์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ํ‘œ์‹œ๋œ ๋Œ€๋กœ ์ •ํ™•ํ•˜๊ฒŒ ํ•ด๋‹น DDL ๋ฌธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜๊ณ  psql ํ”„๋กฌํ”„ํŠธ์— ๋ถ™์—ฌ๋„ฃ๋Š” ๊ณผ์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ์„น์…˜์— ์„ค๋ช…๋œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆ˜๋™์œผ๋กœ ๋ถ„์„์„ ์‹คํ–‰ํ•˜์—ฌ ๋‹ค์Œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์„ธ์š”.

                    index                   | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
 CREATE INDEX ON "School"."Students"("age") |                            3
(1 row)

์ด ๋ณด๊ณ ์„œ์—๋Š” School ์Šคํ‚ค๋งˆ์˜ Students ํ…Œ์ด๋ธ”์—์„œ age ์—ด์— ๋‹จ์ผ ์—ด ์ƒ‰์ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ์ผ ๊ถŒ์žฅ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์กฐ์–ธ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋ณด๊ณ ์„œ ๋‚ด์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ DDL ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

CREATE INDEX ON "School"."Students"("age");

์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ฟผ๋ฆฌ ๋ณด๊ธฐ

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟผ๋ฆฌ ํ†ต๊ณ„๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜๋ณ„ ์ƒ์œ„ ํฌ๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ์ฟผ๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ํŠน์ • ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ƒ‰์ธ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ฟผ๋ฆฌ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์ฟผ๋ฆฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ƒ‰์ธ ๋„์šฐ๋ฏธ๊ฐ€ ์ถ”์ ํ•œ ์ฟผ๋ฆฌ ๋ณด๊ธฐ

google_db_advisor_workload_statements ๋ทฐ์—๋Š” ์ƒ‰์ธ ์ž๋ฌธ์ด ์ถ”์ ํ•œ ๋ชจ๋“  ์ฟผ๋ฆฌ ๋ชฉ๋ก๊ณผ ๋‹ค์Œ ์ธก์ •ํ•ญ๋ชฉ๊ณผ ๊ฐ™์€ ๊ฐ ํ•ญ๋ชฉ์˜ ์ค‘์š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ ํšŸ์ˆ˜
  • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์ด ์‹œ๊ฐ„
  • ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ID

์ƒ‰์ธ ์ž๋ฌธ์˜ ์ถ”์  ์ฟผ๋ฆฌ ์ง€์šฐ๊ธฐ

์ถ”์  ์ฟผ๋ฆฌ๋ฅผ ์ง€์›Œ์„œ ์ธ์Šคํ„ด์Šค์—์„œ ์ƒ‰์ธ ์ž๋ฌธ์˜ ๋™์ž‘์„ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‹ค์Œ SQL ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

SELECT google_db_advisor_reset();

PostgreSQL์šฉ Cloud SQL์€ ์ƒ‰์ธ ์ž๋ฌธ์˜ ์ถ”์ ๋œ ์ฟผ๋ฆฌ ๋ชจ์Œ์„ ์ฆ‰์‹œ ๋น„์›๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„