실무에서 처음보는 이벤트인데 관련 자료가 많이 없네요...
혹시 위 이벤트의 경우 어떤 상황일때 발생하는 이벤트 인지 알 수 있을까요?
세션모니터링 중에 피크시간대에 순간 액티브세션이 20대에서 500대까지 쳤습니다
당시 위 이벤트가 다수 발생했습니다
해당 단어는 lwlock (가벼운 잠금) 분류에 속하는 잠금 때문에 발생하는 대기 이벤트이고요.
공식 문서에서는 "Waiting to read or update sub-transaction information." 이라고 하네요.
(아직 적당한 우리말로 번역을 못했습니다.)
공식문서: https://postgresql.kr/docs/11/monitoring-stats.html#WAIT-EVENT-TABLE
통상 이 wait 이벤트는 스토어 프로시져 안에서 또 begin ... end 구문으로 하위 트랜잭션을 사용할 때 보입니다.
많이 보였던 세션의 해당 쿼리를 살펴보세요. lwlock이라서 크게 신경 안써도 될터인데 ...
답변 감사드립니다^^
그러면 순간 다수의 lwlock 이벤트(subtranscontrollock)들이 발생한 것들에 대해서는 무시하고 넘어가도 특별한 문제가 없다고 보면 될까요?
통상 lwlock들은 잠깐 보였다 사라지는 것들입니다.
그런데, 그 lock이 안풀리고 계속 보인다면, 원인을 찾아야죠.
예를 들어서, WALWriteLock 이놈이 보인다, 이건 pg_wal 쪽에 파일 쓰기 쪽 충돌 문제거든요.
이런경우는 wal 쓰기 작업이 많을 때 발생하겠죠. 서버가 바쁘니, 어쩔 수 없는 상황인거죠.
해당 디스크 볼륨을 쓰기 성능이 좋은 놈으로 바꾸기 전까지는 답이 없게 됩니다.
아마 lwlock 종류 중에는 제일 흔하게 볼 수 있는 lock 경합입니다.
subtrans 쪽 아마 그 비슷하게 DB 서버가 바빠서 그런게 보인 것이 아닐까 조심스럽게 추측해봅니다.
왜 바빴는지를 분석해야할 상황이라면, 이 문제는 또 다른 문제겠죠.
아무튼 그렇습니다. lwlock이니 무시해도돼는 아니였어요.