[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