[PostgreSQL] Unlogged Table
Unlogged Table์ ๋์ ์ฐ๊ธฐ ์ฑ๋ฅ์ด ํ์ํ ์์ธ์ฌํญ์ ์ํด ์ ๊ณต๋๋ ๊ณ๊ฐ์ง ๊ฐ์ ๊ธฐ๋ฅ์ด๋ค.
"๋ก๊ทธ๋ฅผ ๋จ๊ธฐ์ง ์๋" ํน์ํ ํํ๋ก ํ
์ด๋ธ์ ๊ตฌ์ฑํ๊ธฐ ๋๋ฌธ์, ์ผ๋ฐ์ ์ธ ํ
์ด๋ธ๋ณด๋ค ๋น ๋ฅด๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ๋ก๊ทธ๋ WAL์ ๋งํ๋ค. ์ ๋ชจ๋ฅธ๋ค๋ฉด ๋ณ๋ ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://blog.naver.com/sssang97/223233122052
Trade-off
์๋ค์ํผ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ก๊ทธ์ ๊ธฐ๋ฐํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
์ฅ์ ์ํฉ์ ๋์ํ๊ณ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๊ธฐ ์ํจ์ด๋ค.
Unlogged Table์ ์ด๋ฐ ๋ก๊ทธ๊ฐ ์ ์ฅํ์ง ์์์ ์ข ๋ ๋น ๋ฅธ ๋์ ์ ๋ฐ์ดํฐ๊ฐ ์ธ์ ๋ ์ ์ค๋๊ฑฐ๋ ๊นจ์ง ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ํฌ๊ฒ ์ค์ํ์ง ์์ ์บ์ฑ, ์์ ๋ฐ์ดํฐ ๋ก๋, ETL ๋ฑ์ ์ ์ฉํ๋ค๊ณ ์ฃผ์ฅํ๊ณค ํ๋ค.
์ฌ์ฉ๋ฒ
ํน๋ณํ ์ฌ์ฉ๋ฒ์ด ๋ฐ๋ก ์์ง๋ ์๋ค. ๊ทธ๋ฅ ํ ์ด๋ธ ๋ง๋ค๋ UNLOGGED ํค์๋ ํ๋๋ง ๋ฃ์ด์ ์์ฑํ๋ฉด ๋๋ค.
CREATE UNLOGGED TABLE unlogged_table (
key varchar(100) PRIMARY KEY,
value TEXT
);

์ฑ๋ฅ ๋น๊ต
๊ทธ๋ฅ key value ํ ์ด๋ธ ํ๋์ฉ ๋ง๋ค์ด์ ์ฐ๊ฒจ๋ฃ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋ฃ์ด๋ณด๊ฒ ๋ค.
CREATE UNLOGGED TABLE unlogged_table (
key varchar(100) PRIMARY KEY,
value TEXT
);
CREATE TABLE logged_table (
key varchar(100) PRIMARY KEY,
value TEXT
);
๊ธฐ๋ณธ ํ ์ด๋ธ์ 1000๋ง๊ฐ ์ ๋๋ฅผ ๋๋ ค๋ฃ์์ ๋๋
\timing
insert into logged_table(key, value)
select generate_series::TEXT, 'foo'::TEXT from generate_series(0, 10000000);
25์ด ์ ๋๊ฐ ๊ฑธ๋ ธ๊ณ
UNLOGGED Table์ 1000๋ง๊ฐ๋ฅผ ๋ฃ์์ ๋๋
\timing
insert into unlogged_table(key, value)
select generate_series::TEXT, 'foo'::TEXT from generate_series(0, 10000000);
๊ทธ๊ฑฐ๋ณด๋จ ์ ์ 18์ด ์ ๋๊ฐ ๊ฑธ๋ ธ๋ค.
๋ถ์์ ์ฑ์ ๋ด๋ณด๋ก ํ ๊ฒ์น๊ณค ์ฐ๊ธฐ ์ฑ๋ฅ์ด ์์ฃผ ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋์ง๋ ์์๋ค. ๋ด ํ๋์จ์ด ์ฑ๋ฅ์ด ์ฉ ๊ด์ฐฎ์ ํธ์ด๊ธด ํ๋ฐ, ๊ทธ๊ฑธ ๊ฐ์ํด๋ ๊ทน์ ์ธ ์ ๋๋ ์๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ์ฝ๊ธฐ ์ฑ๋ฅ์ ๊ฑฐ์ ๋๊ฐ๋ค. ์ฐ๊ธฐ ์ฑ๋ฅ์์๋ง ์ ์๋ฏธํ ์ฐจ์ด๊ฐ ๋๋ค.
๊ฒฐ๋ก
์ด๊ฑธ Redis ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ DB ๋์ฉ์ผ๋ก ์ธ ์ ์๋ค๋ ์ฃผ์ฅ๋ ์๋ค๋ง, ์ฌ์ค ์ด๊ฑด ๋์ํ๊ธฐ ์ด๋ ต๋ค.
Redis๋ ์ฝ๊ธฐ ๋ ์ดํด์๋ฅผ ์ต์ํํ๋ ๊ฒ์ ์ฃผ ๋ชฉ์ ์ด ์๋๋ฐ, UNLOGGED ์ด๋ค๊ณ ํด์ ์ฝ๊ธฐ ์ฑ๋ฅ์ด ์ข์์ง๋๊ฑด ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฒฐ๊ตญ ์ด๊ฑด ๋์คํฌ ์ ์ฅ์ด๋ค.
๋ด ๋ณด๊ธฐ์ ๋ ์ดํด์์ ๋ฏผ๊ฐํ์ง ์์ ์บ์ฑ DB๋ก ์ฐ๊ณ ์ถ๋ค๋ฉด ๊ทธ๋ฅ ๊ธฐ๋ณธ ํ ์ด๋ธ๋ก ๋ง๋ค์ด๋ ์ถฉ๋ถํ๋ค.
์ด ๊ธฐ๋ฅ์ ๊ฐ์น๋ ์์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฌ๋ ค์ ์ฐ๋ ๊ฒ ๋ฐ์๋ ์๋ค.
์ฐธ์กฐ
https://medium.com/@wasiualhasib/unlogged-tables-in-postgresql-9d1f1f34a45b