AWS RDS μ¬λ‘μ° μΏΌλ¦¬ λ‘κ·Έμ 컀μ μ΄λ¦ μ΄μ
μ μ€ν¬λ¦°μ·μ 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"