AWS 및 클라우드 지식/AWS RDS, Aurora 및 관련 지식

RDS, Aurora PostgreSQL 에서 발생하는 CommitThroughput 과 SELECT 간의 관계

`O` 2024. 2. 23. 02:48
728x90
반응형

해당 페이지에서는 RDS, Aurora PostgreSQL 에서 확인이 가능한 monitoring metric 인 CommitThroughput 에서 SELECT 구문이 어떻게 영향을 미치는지 다룬다.

 

해당 내용은 아래의 공식 PostgreSQL Document 를 참조하여 기재한다.

 

[1] https://www.postgresql.org/docs/current/runtime-config-query.html

 

 

RDS, Aurora PostgreSQL 의 CommitThroughput 이 뜻하는 의미

 

RDS, Aurora PostgreSQL 에서 CommitThroughput 은 일반적으로 쓰기 작업이 빈번히 처리 될 수록 증가하는 metric 이다.

즉, DB 쓰기 부하가 커질수록 이에 대한 상승은 필연적이며 해당 metric 에 단위시간을 곱하면 실제 단위시간당 얼마나 data 가 처리 되는지도 계산 할 수 있다.

 

 

Read Replica, Reader 에서 CommitThroughput 이 증가하는 이유

 

그러나, 실제 운영중인 RDS, Aurora PostgreSQL 에서 읽기 작업만 수행되는 Read Replica, Reader 에서 해당 metric 이 증가 할 수 있다. 상식적으로는 쓰기 작업이 수행되지 않는데 해당 사항이 증가하는 것은 특이한 현상이다.

 

PostgreSQL 에서 해당 사항이 증가하는 이유는 아래와 같다. PostgreSQL 에서는 특이하게 성공적으로 수행된 select 구문도 쿼리 수행 통계를 보여주는 pg_stat_database 에서 commit 으로 처리되어 count 된다. 이로 인해 쓰기 작업이 아닌 SELECT 만 계속 수행해도 이 값이 증가하게 되어 이 값을 참조하는 CommitThroughput 값 또한 증가하게 되는 것이다.

 

실제 테스트를 수행하면 아래와 같은 결과를 확인 할 수 있다.

 

[Aurora Reader 인스턴스 Test 예시 / Test 는 postgres database 에서 수행]

postgres=> select datname,xact_commit from pg_stat_database;
  datname  | xact_commit
-----------+-------------
		   |           0
 test1     |           0
 template0 |           0
 template1 |           0
 postgres  |          19
 rdsadmin  |        1886
 mydb      |           0
(7 rows)

postgres=> select datname,xact_commit from pg_stat_database;
  datname  | xact_commit
-----------+-------------
		   |           0
 test1     |           0
 template0 |           0
 template1 |           0
 postgres  |          20
 rdsadmin  |        1902
 mydb      |           0
(7 rows)

 

반응형