μœ„ μŠ€ν¬λ¦°μƒ·μ˜ 14μ‹œμ™€ 15μ‹œ 사이에 RDS 의 DB μΈμŠ€ν„΄μŠ€μ˜ CPU λΆ€ν•˜κ°€ 90% 이상을 μ΄ˆκ³Όν–ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ˜ 경우 μ–΄λ–€ ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰ν•œ 쿼리가 λ¬Έμ œκ°€ 되고 μžˆλŠ”μ§€ μ•ŒκΈ° μœ„ν•΄μ„œ AWS Aurora PostgreSQL의 ν΄λŸ¬μŠ€ν„° λ˜λŠ” μΈμŠ€ν„΄μŠ€ νŒŒλΌλ―Έν„°λ₯Ό λ³€κ²½ν•˜μ—¬ 쿼리 λ‘œκΉ…μ„ ν™œμ„±ν™”ν•˜κ³  log_min_duration_statement에 λŒ€ν•œ 값을 μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή λ°€λ¦¬μ΄ˆλ₯Ό μ΄ˆκ³Όν•˜μ—¬ μˆ˜ν–‰ν•œ 쿼리에 λŒ€ν•œ duration 둜그λ₯Ό κΈ°λ‘ν•˜κ³  CloudWatch의 둜그 μΈμ‚¬μ΄νŠΈμ—μ„œ 확인할 수 μžˆλ‹€.

FETCH ALL IN "rcursor" πŸ€”

RDS μ½˜μ†”μ˜ μ„±λŠ₯ κ°œμ„  λ„μš°λ―Έμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ λ‘œλ“œμ™€ μƒμœ„ SQL 정보λ₯Ό 확인할 수 μžˆλŠ”λ° μœ„μ™€ 같이 FETCH ALL IN "rcursor" κ°€ λŒ€λΆ€λΆ„μ˜ λ‘œλ“œλ‘œ κΈ°λ‘λ˜μ–΄μžˆλŠ” κ±Έ λ³Ό 수 μžˆλ‹€. μ‹€μ œ SQLλ₯Ό 확인할 수 μžˆλŠ” 것듀 이외에 rcursor λž€ 것은 λ„λŒ€μ²΄ 무엇을 μ˜λ―Έν•˜λŠ” 것인지 μ•Œμ•„μ•Όν•  것 κ°™λ‹€. PL/pgSQL ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  λ•Œ Cursorλ₯Ό μ„ μ–Έν•˜κ³  μ‘°νšŒν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€. 일반적으둜 μ΄μ•ΌκΈ°ν•˜λŠ” ν”„λ‘œμ‹œμ € ν•¨μˆ˜λ₯Ό μ˜λ―Έν•˜λ©° μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©μ€‘μΈ λŒ€λΆ€λΆ„μ˜ ν•¨μˆ˜μ˜ μ»€μ„œ 이름을 λ™μΌν•˜κ²Œ μ§€μ •ν•˜μ—¬ μ„ μ–Έν–ˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

기본적으둜 μ»€μ„œ 이름을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ <unnamed cursor 1>와 같은 λžœλ€ν•œ μ»€μ„œκ°€ λ§Œλ“€μ–΄μ§€κ³  JDBC μ—μ„œ SQL ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ κ²°κ³Όμ—μ„œ μ»€μ„œ 이름을 ꡳ이 λ™μΌν•˜κ²Œ 지정할 ν•„μš”λŠ” μ—†λ‹€. λ”°λΌμ„œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν•¨μˆ˜ μ •μ˜ μ‹œ μ–΄λ–€ μ΄λ¦„μ˜ μ»€μ„œλ₯Ό μ‚¬μš©ν•˜λŠ”μ§€μ— λŒ€ν•΄μ„œλŠ” μƒκ΄€ν•˜μ§€ μ•ŠμœΌλ©° SQL ν•¨μˆ˜λ₯Ό κ΄€λ¦¬ν•˜λŠ” 개발자 ν˜Ήμ€ DBAκ°€ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 이름일 뿐이닀. κ·Έλž˜μ„œ μ‰½κ²Œ κ΄€λ¦¬ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν†΅μΌν–ˆλ˜ κ²ƒμœΌλ‘œ μƒκ°λœλ‹€.

RDS λͺ¨λ‹ˆν„°λ§μ„ μœ„ν•œ μ»€μ„œ 이름을 μ‚¬μš©ν•˜μ„Έμš”.

RDS λͺ¨λ‹ˆν„°λ§ 및 슬둜우 쿼리λ₯Ό 확인할 수 μžˆλ„λ‘ λ™μΌν•œ μ»€μ„œ 이름이 μ•„λ‹Œ SQL ν•¨μˆ˜λ³„ λ³„λ„μ˜ μ»€μ„œ 이름을 μ •μ˜ν•˜μ—¬ κ΅¬λΆ„ν•˜λŠ”κ²Œ ν•„μš”ν•˜λ‹€. SQL ν•¨μˆ˜ μž‘μ„± μ‹œ μ»€μ„œ 이름은 ν•¨μˆ˜ 이름과 λ™μΌν•˜κ²Œ ν•˜μ—¬ λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜κΈ°λ‘œ ν˜‘μ˜ν–ˆκ³  μœ„μ™€ 같이 였래 μˆ˜ν–‰λ˜λŠ” 슬둜우 쿼리λ₯Ό μ‰½κ²Œ 확인할 수 μžˆλ‹€. κΈ°μ‘΄μ—λŠ” κ°œλ°œμžκ°€ 슬둜우 쿼리λ₯Ό 확인할 수 μžˆλ„λ‘ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ— λ‘œκ·Έκ°€ 좜λ ₯λ˜λ„λ‘ ν–ˆμ§€λ§Œ μ΄μ œλŠ” 개발자 뿐만 μ•„λ‹ˆλΌ DB ν˜Ήμ€ 인프라 μ—”μ§€λ‹ˆμ–΄λ„ RDS λͺ¨λ‹ˆν„°λ§μœΌλ‘œ 슬둜우 쿼리 ꡬ뢄이 κ°€λŠ₯ν•˜λ„λ‘ λ³€κ²½ν•˜κ³  μžˆλ‹€.

# μ—¬λŸ¬λΆ„μ€ μ–΄λ–€ 쿼리가 2μ΄ˆλ‚˜ μ†Œμš”λ¬λŠ”μ§€ νŒŒμ•…ν•  수 μžˆλ‚˜μš”?
LOG:  duration: 2217.321 ms  execute <unnamed>: FETCH ALL IN "rcursor"