Index 크기가 증가하는 것에 대하여 고민하다가
간단히 Test 해본것을 공유드립니다.
HOT update는 같은 페이지에 있을 경우 index의 row가 추가가 안된다는 개념으로 전 이해했습니다.
create table t1 (serial_num numeric, address varchar, ctime timestamp, utime timestamp);
create table t2 (serial_num numeric, address varchar, ctime timestamp, utime timestamp) with (fillfactor=50);
insert into t1 (serial_num,address,ctime) values (generate_series(10000000001,10000500000),'seoul',current_timestamp);
insert into t2 (serial_num,address,ctime) values (generate_series(10000000001,10000500000),'seoul',current_timestamp);
vacuum analyze t1;
vacuum analyze t2;
alter table t1 add primary key (serial_num);
alter table t2 add primary key (serial_num);
update t1 set address='부산6'
update t2 set address='부산6'
analyze;
# 500000건에 대한 전체 update 시 HOT update양
SELECT pg_stat_get_tuples_hot_updated(t1::regclass::oid);
0
SELECT pg_stat_get_tuples_hot_updated(t2::regclass::oid);
287240
update,delete가 많은 환경에서는 table fillfactor를 조정하여 HOT update가 많이 발생하도록
조정하는게 필요할거 같습니다.
추가적으로 이러한 테이블에 대하여 autovacuum설정을 자주 돌도록 조정하는 거 또한 고려하시길 바랍니다.