본문으로 건너뛰기

5.2. APM 에서 SQL 을 눌러 바로 진단하기

트랜잭션 상세의 AI 쿼리 진단 버튼 — 프롬프트를 쓰지 않고 결과를 받는 길

느린 트랜잭션을 살펴보다 어느 SQL 이 지연을 일으키는지 알아냈을 때, 그 쿼리를 위젯에 옮겨 적을 필요가 없습니다. 버튼 하나로 넘깁니다.

이 장은 OPENMARU APM 에만 있는 길입니다. 다른 콘솔에는 없습니다.

어디에 있나

APM 에서 SQL 진단으로 가는 길

워터폴에서 DB 를 호출한 구간에는 이름 옆에 SQL 버튼이 붙습니다. 누르면 그 스팬의 쿼리를 보여주는 다이얼로그가 열립니다.

다이얼로그가 보여주는 것

SQL 쿼리 다이얼로그 — 매핑된 쿼리와 AI 쿼리 진단 버튼
내용
01 SQL 쿼리원본 쿼리 — 물음표(?) 자리표시자가 그대로
02 파라미터그 자리에 실제로 들어간 값
03 매핑된 쿼리값이 채워진 실행된 그대로의 쿼리
04 FETCH결과를 몇 번, 얼마 만에 가져왔나

제목 옆에 성공 / 실패 배지가 붙고, 실패했다면 오류 내용이 함께 나옵니다. 접속 정보와 걸린 시간도 표시됩니다.

각 칸에 복사 버튼이 있어 따로 복사할 수도 있습니다.

버튼을 누르면

**AI 에 넘어가는 것은 매핑된 쿼리**입니다. 자리표시자가 아니라 실제 값이 들어간 쿼리라 실행 계획을 그대로 받아 올 수 있습니다.

화면이 프롬프트를 대신 만들어 줍니다. 대강 이런 내용입니다.

database 서버 connection_id=<DB 종류> 아래 쿼리를 analyze_slow_query 도구를 사용해 분석해줘 — Query : <매핑된 쿼리>

쿼리가 실패한 것이었다면 오류 메시지도 함께 넘어갑니다. 왜 실패했는지까지 봐 달라는 뜻입니다. 사용자가 따로 붙여 넣지 않아도 됩니다.

DB 종류(mysql·oracle·postgresql …)와 접속 대상은 다이얼로그가 보고 있던 접속 정보에서 자동으로 채웁니다.

눌렀을 때 화면 반응

버튼이 순서대로 바뀝니다. 이 변화가 "접수됐다" 는 신호입니다.

버튼을 누르면 생기는 변화

동시에 화면 위에 "CogentAI 패널에서 결과를 확인하세요" 라는 알림이 잠깐 나옵니다.

SQL 다이얼로그는 닫히지 않습니다

일부러 그렇게 만들었습니다. 요청을 보낸 뒤에도 쿼리를 계속 보면서 위젯의 답을 읽을 수 있습니다. 다 봤으면 닫기X 로 직접 닫습니다.

위젯이 접혀 있었다면 알림을 보고 펼치십시오. 답은 이미 그 안에 도착해 있습니다.

결과로 무엇이 오나

analyze_slow_query 가 하는 일이라 답변에는 대개 이런 것이 함께 옵니다.

  • 실행 계획 — 트리 모양 차트. 어느 단계가 비싼지 눈으로 짚을 수 있습니다
  • 느린 이유 — 인덱스를 쓰지 않았다, 전체 스캔이다 같은 해석
  • 고칠 방향 — 인덱스 후보, 쿼리 다시 쓰기

실행 계획 차트는 끌어서 옮기고 확대할 수 있습니다. 큰 계획은 화면을 벗어나므로 다루는 법을 실행 계획과 ERD 읽기에서 따로 다룹니다.

잘 안 될 때

버튼이 아예 안 보인다

두 가지 중 하나입니다.

  • APM 설정에서 CogentAI 연동이 꺼져 있다 — 관리자가 켜야 합니다
  • 내 계정에 권한이 없다 — 계정마다 사용 여부를 가릅니다

관리자에게 문의하십시오. 화면에서 켤 수 있는 것이 아닙니다.

"AI 위젯이 아직 준비되지 않았습니다"

위젯이 다 준비되기 전에 눌렀을 때 나옵니다. 요청은 보내지 않습니다. 아무 반응 없이 끝나는 것보다 알려 주는 편이 낫기 때문입니다.

잠깐 기다렸다 다시 누르십시오. 계속 같으면 화면을 새로 고칩니다.

눌렀는데 답이 안 온다

위젯을 펼쳐 보십시오. 접힌 상태라도 답은 그 안에 들어옵니다. 그래도 없으면 잘 안 될 때를 보십시오.

이 길이 편한 이유

같은 일을 자유 질문으로 하려면 쿼리를 복사해 붙이고, DB 종류를 적고, 도구 이름을 적어야 합니다. 버튼은 그 셋을 대신합니다.

버튼손으로
쿼리매핑된 쿼리를 자동으로복사·붙여넣기
DB 종류접속 정보에서 자동직접 적기
오류 메시지있으면 자동 포함따로 붙이기

옮겨 적는 사이에 값이 틀어질 일이 없다는 것이 가장 큰 차이입니다.

다음으로