AWS Korea Tech Blog

PostgreSQL의 Fillfactor와 영향도

thumbnail

목차

  1. Fillfactor란
  2. 테스트 환경
  3. HammerDB를 이용한 TPROC-C 워크로드 실행
  4. 테스트 결과 분석
  5. Aurora 최적화 읽기

1. Fillfactor란

  • Fillfactor: 테이블이나 인덱스를 생성할 때, 데이터 페이지가 가득 차기 전에 얼마나 많은 여유 공간을 유지할지를 결정하는 PostgreSQL의 옵션
  • Heap-only-Tuple: UPDATE시 인덱싱된 컬럼이 아닌 컬럼만 업데이트되거나, 충분한 여유 공간이 있을 때 UPDATE 오버헤드를 줄이기 위한 최적화 기능

2. 테스트 환경

  • HammerDB의 OLTP 워크로드(TPROC-C)를 사용
  • Fillfactor 100(FF100), 80(FF80), 60(FF60), 40(FF40)으로 설정된 데이터베이스 생성

TPROC-C 스키마

  • Warehouse 수에 의해 Stock, District, Orders, OrderLine, Customer 테이블의 행 수 결정

3. HammerDB를 이용한 TPROC-C 워크로드 실행

  • FF100 데이터베이스에 500개의 VU를 사용하여 300분 동안 워크로드 실행
  • Checkpoint로 인한 대량의 쓰기 I/O를 방지하여 지속적인 Throughput 유지

4. 테스트 결과 분석

  • Aurora의 CPU 사용률은 Fillfactor의 영향이 없으나 VU 수가 증가하면 CPU 사용량도 증가
  • HOT Update 비율이 높을수록 스토리지를 효율적으로 활용하여 페이지 할당을 줄일 수 있음

5. Aurora 최적화 읽기

  • Aurora는 Temporary Objects 및 NVMe 스토리지를 활용하여 최적화 읽기를 지원
  • Fillfactor가 작을수록 스토리지를 더 효율적으로 사용하게 됨
  • Fillfactor를 작게 조절하면 HOT Update 빈도가 높아져 Update 구문 최적화로 처리량을 향상시킬 수 있음