2011. 1. 11. 11:54
PostgreSQL - fsync Work/PostgreSQL2011. 1. 11. 11:54
PostgreSQL이 설치 된 후 Data Directory에 보면, postgresql.conf 라는 설정 파일이 있다.
이 설정 파일의 parameter 들 중 fsync 에 대해서 test해 본 결과를 기록한다.
이 옵션의 의미는 사용자가 시스템 콜 혹은 DML, DDL 등의 결과를 메모리에서 Disk로 내려쓰는 일을 하는 것을 의미한다.
언제 어떤 조건에서 내려쓰는지는 찾지 못했지만, 기본적으로 시간 날때 마다 쓰는 듯 한 느낌...
(좀 더 공부를..ㅠㅠ)
아래는 Test 결과...
create table t_20110110_03 ( name varchar(30) );
create table t_20110110_04 ( name varchar(30) );
SELECT COUNT(*) FROM t_20110110_02; -- 4,292,608
INSERT INTO t_20110110_03 SELECT * FROM t_20110110_02;
-- fsync off : 13860 ms
INSERT INTO t_20110110_04 SELECT * FROM t_20110110_02;
-- fsync on : 25125 ms
truncate table t_20110110_03;
truncate table t_20110110_04;
INSERT INTO t_20110110_03 SELECT * FROM t_20110110_02;
-- fsync on : 23516 ms
INSERT INTO t_20110110_04 SELECT * FROM t_20110110_02;
-- fsync off : 13860 ms
마지막 2개의 해당 쿼리를 실행할 때의 Phisical Disk Write 모습..
화면에 제대로 안잡혔는데... 위의 모습으로 보아 디스크의 효율적인 사용은 fsync off가 더 나은 듯 하다.
당연한 이야기 이지만, 상황에 따라 잘 써야 할 듯...