[Clickhouse] Engine: ReplacingMergeTree
MergeTree ์์ง์ ์ฃผ์ ๋ณ์ข
์์ง ์ค ํ๋๋ค.
๋ง์ฝ ์ ๋ ฌํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๊ณ ์ถ๋ค๋ฉด ์ด ์์ง์ ์ ํํ๋ฉด ๋๋ค.
์ผ๋ฐ์ ์ธ ๊ณตํต์ฌํญ์ MergeTree์ ๋ํ ๊ธ์ ์ฐธ์กฐํ๋ค.
https://blog.naver.com/sssang97/223926218194
ํ ์ด๋ธ ์ ์๋ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ์ ์์ด์๋ MergeTree์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
ORDER BY๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ณต์ ์ ๊ฑฐํ๋ค๋ ๊ฒ์ ์๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์ค๋ณต ์ ๊ฑฐ
ORDER BY ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ค.

๋ฌธ์ ๋, ์ค๋ณต ์ ๊ฑฐ๊ฐ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๋๊ฑด ์๋๋ผ๋ ๊ฒ์ด๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ Merge๊ฐ ์งํ๋ ๋ ๋ชจ์์ ์ค๋ณต์ ์ ๊ฑฐํ๋๋ฐ, ์ด๊ฒ ๊ทธ๋ ๊ฒ ์์ฃผ ์คํ๋์ง๋ ์๋๋ค.
Merge๋ฅผ ํธ๋ฆฌ๊ฑฐํด์ ๊ฐ์ ๋ก ์ค๋ณต์ ์ ๊ฑฐํ๋ ค๋ฉด, OPTIMIZE๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.

๋ค๋ง, ๊ถ์ฅ๋์ง๋ ์๋๋ค.
์ค๋ณต ์ ๊ฑฐ์ ๋ฐ์ดํฐ ๋ฒ์ ๋
RDB์ Unique ์กฐ๊ฑด์ ๊ฒฝ์ฐ์๋ ๊ฐ๋ ฅํ๊ฒ Lock์ ๊ฑธ๊ณ ์ ์ผ์ฑ์ ์ฒ๋ฆฌํด์ ๋์ค์ ๋ค์ด์จ ๊ฐ์ด ํ๊ธฐ์ง๋ง, ์ด๊ฑด ์ค์๊ฐ์ด ์๋๋ผ์ ๊ทธ๋ ๊ฒ๋ ๋ชปํ๋ค.
๊ทธ๋ฌ๋ฉด ๋ฌด์์ ๊ธฐ์ค์ผ๋ก ๋จ๊ฒจ๋ ํญ๋ชฉ์ ์ ํํ ๊น?
๋ฐ๋ก ๋ฒ์ ์ ์ง์ ํ์ง ์๋๋ค๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง์ insert๋ ๊ฒ๋ง์ ๋จ๊ธฐ๊ณ ์ ๋ถ ์ง์ด๋ค.
๋ง์ฝ ํ์คํ๊ฒ ๋์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ง ๋จ๊ธฐ๊ณ ์ถ๋ค๋ฉด, ๋ฒ์ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ฒ์ ๋ ๋์์ผ๋ก ์ง์ ํด์ ์ค๋ณต ์ ๊ฑฐ ์กฐ๊ฑด์ ๋ช ํํ๊ฒ ๋ง๋ค ์ ์๋ค.
์ด๋ ๊ฒ ๊ฑธ์ด๋๋ค๋ฉด

๋ฒ์ ๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฒ๋ง ๋จ๊ธฐ๊ณ ์ง์ด๋ค.
์ฌ๊ธฐ์๋ ์ ์๋ก ํ์ง๋ง ์๊ฐ ๊ฐ์ ๋ฃ์ด๋ ๋๋ค.
min_age_to_force_merge_seconds ์ธํ
ReplacingMergeTree๋ MergeTree์ ๊ธฐ๋ณธ ๋ณํฉ ์ ์ฑ
์ ๋ฐ๋ผ์ ์ค๋ณต ํค๋ฅผ ์ ๊ฑฐํ๋ค.
๊ทผ๋ฐ ์ด๊ฑด ์๊ฐ๋ณด๋ค ๋๊ธํ๊ฒ ์ฒ๋ฆฌํ๋๊ฑฐ๋ผ์ ์ํ๋ ์์ค์ ์ ์ผ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.
์ด๋ ์ ์ฉํ๊ธฐ ์ข์ ์ค์ ์ด min_age_to_force_merge_seconds๋ค
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY SETTING min_age_to_force_merge_seconds = 10
์ด๋ฌ๋ฉด ํด๋น ์ด ์ด์์ด ์ง๋ ๋ฐ์ดํฐ์ ๋ํด์ ๊ฐ์ ๋ก ๋ณํฉ-์ค๋ณต์ ๊ฑฐ๋ฅผ ํ๋๋ก ์ง์ ํ ์ ์๋ค.
์ฐธ์กฐ
https://clickhouse.com/docs/engines/table-engines/mergetree-family/replacingmergetree
https://clickhouse.com/docs/guides/replacing-merge-tree