[환경]
- AWS RDS 환경
- Postgres 12.x 버전 사용중
- Master / Slave1 / Slave2 구성
- 평소 CPU/메모리 사용율은 25%를 넘지 않았음
[문제]
1억건 넘는 테이블에서 30만개가량의 Row를 삭제했습니다. (DELETE 쿼리로 과거데이터를 주기적으로 삭제할 예정이었음)
문제는 이때부터 발생했는데, 이후 지속적으로 Slave에서 아래와같은 오류가 발생했습니다.
CAUSE : PSQLException: ERROR: canceling statement due to conflict with recovery
Detail: User query might have needed to see row versions that must be removed.
당시에는 hot_standby_feedback옵션이 false상태라 해당 옵션을 true로 변경해서 위의 이슈는 처리했으나,
지속적으로 Slave CPU만 엄청나게 튀는 현상(Slow query도 발생)이 계속 발생해 Aurora postgresql로 DB를 이관했습니다.
근데, 그 이후에도 Master만 사용시에는 이슈가 없는데 Slave를 붙이는 경우 지속적으로 slow query (쿼리 플랜을 봤을때 Master, slave의 플랜은 동일)가 발생합니다.
Aurora postgresql로 이동하면서 Dead tuple수라던지 이런문제는 해소된듯 한데 Slave만 Slow query가 발생하는 이유가 무엇일까요
시작은 데이터 삭제 후부터 발생한 현상인데 어떤 키워드로 어디서부터 접근해야하는지 감이 오지않아 이렇게 전문가분들의 도움을 요청드립니다.
|