All pages
1 of 1

Loading...

Apply Process

Apply ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•œ๋‹ค.

Process ์„ค๋ช…

Apply ํ”„๋กœ์„ธ์Šค๋Š” ์ œํ’ˆ ์„ค๊ณ„์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Chunk ๋‹จ์œ„๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌ๋ฐ›๊ณ  ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ํŠธ๋žœ์žญ์…˜๋ณ„๋กœ ๋ชจ์•„์ค€๋‹ค. ํŠธ๋žœ์žญ์…˜์— Commit์ด ์˜ค๋ฉด ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์€ ์‹ค์ œ ๋ฐ˜์˜ ๋‹จ๊ณ„์— ๋“ค์–ด๊ฐ€ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฐ˜์˜๋œ๋‹ค.

๋ณธ ์žฅ์—์„œ๋Š”, ์‹ค์ œ apply ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•œ๋‹ค.


Threads

๊ทธ๋ฆผ 1. Apply Process Architecture

Apply ํ”„๋กœ์„ธ์Šค๋Š” ์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์•ž์„œ ์—์„œ ProSync์˜ ๊ธฐ๋ณธ Thread ๊ตฌ์กฐ๋ฅผ ์–ธ๊ธ‰ํ•œ ๋ฐ” ์žˆ๋Š”๋ฐ, Apply๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Main์ด ๋˜๋Š” Control Thread๊ฐ€ ์žˆ๊ณ  ์ด์™ธ์— Worker Thread๋“ค์ด Control Thread ํ•˜์œ„ ๊ณ„์ธต์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋™๊ธฐํ™”์— ํ•„์š”ํ•œ Thread๋Š” Construct Thread์™€ Replay Thread๋กœ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ด๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ Worker Thread๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

์ฐธ๊ณ 

Worker Thread๋Š” ์ข…๋ฅ˜๊ฐ€ ๋งŽ์€ ๊ด€๊ณ„๋กœ ํ•˜๋‹จ์— ๊ฐ„๋‹จํžˆ ์–ธ๊ธ‰ํ•œ๋‹ค.

Control Thread

Control Thread๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋“  ํ†ต์‹ ๊ณผ ๊ด€๋ จ๋œ Multiplexing I/O๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„  epoll์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ”Œ๋žซํผ๋ณ„๋กœ k-queue๋‚˜ pollset ๋“ฑ ๊ฐ ์šด์˜์ฒด์ œ์— ์•Œ๋งž์€ Mux I/O ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.

Construct Thread๋Š” _Chunk_๋กœ ๋“ค์–ด์˜ค๋Š” ๋ ˆ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๋“ค์— ๋Œ€ํ•ด ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์žฌ์กฐ๋ฆฝํ•œ๋‹ค. Construct๋ผ๋Š” ๋ง์˜ ์˜๋ฏธ๋Š” ํŠธ๋žœ์žญ์…˜์„ ๋‹ค์‹œ ์กฐ๋ฆฝ(Construct)ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๊ฐ ๋ ˆ์ฝ”๋“œ์—๋Š” ๋ณธ์ธ์ด ์†ํ•œ ํŠธ๋žœ์žญ์…˜์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ key ๊ฐ’์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ํŠธ๋žœ์žญ์…˜์˜ ID ์ผ๋ช… (xid)๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

Construct๋Š” ๋ ˆ์ฝ”๋“œ์˜ xid ๊ฐ’์„ ๋ณด๊ณ  ํŠธ๋žœ์žญ์…˜๋ณ„๋กœ ์žฌ์กฐ๋ฆฝํ•œ๋‹ค.

Replay Thread๋Š” Commit ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋„๋‹ฌํ•˜์—ฌ Construct๋กœ๋ถ€ํ„ฐ ์กฐ๋ฆฝ์ด ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์„ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. ์ „๋‹ฌ๋ฐ›์€ ํŠธ๋žœ์žญ์…˜์€ Commit ๋ ˆ์ฝ”๋“œ์˜ DB Time(Oracle์˜ SCN / Tibero์˜ TSN / ..)์— ๋งž๊ฒŒ ์ง๋ ฌํ™”๋˜์–ด ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ํŠธ๋žœ์žญ์…˜ ๋‚ด ๋ ˆ์ฝ”๋“œ๋“ค์˜ ์˜์กด์„ฑ์„ ๋ชจ๋‘ ์ฒดํฌํ•˜์—ฌ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ Replay Thread์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ฒŒ ๋˜๋ฉฐ, ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ DB์˜ ํ•œ ์„ธ์…˜์„ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋Š” Control Thread์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒ๋‹จํ•˜๋ฉฐ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•  ๋•Œ ์—ฌ๋Ÿฌ Replay Thread์— ์ผ๊ฐ์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋œ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ CPU / Memory ์‚ฌ์šฉ๋Ÿ‰์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•œ๋‹ค. ์ˆ˜์ง‘๋œ ๋‚ด์šฉ์€ ๋กœ๊ทธ์ƒ์— ๊ณ„์†ํ•ด์„œ ๋‚จ๊ฒŒ ๋˜๋ฉฐ, ํ”„๋กœ์‹ฑํฌ ๋งค๋‹ˆ์ €์™€ ์—ฐ๋™ ์ค‘์ผ ๊ฒฝ์šฐ, Agent ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜์ง‘ํ•œ ๊ฐ’์„ ํ”„๋กœ์‹ฑํฌ ๋งค๋‹ˆ์ €๋กœ ์ „์†กํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰, ์ผ์ข…์˜ Throughput์„ ๊ณ„์‚ฐํ•œ๋‹ค. ํ”„๋กœ์‹ฑํฌ ๋งค๋‹ˆ์ €์™€ ์—ฐ๋™ ์ค‘์ผ ๊ฒฝ์šฐ, Agent ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜์ง‘ํ•œ ๊ฐ’์„ ํ”„๋กœ์‹ฑํฌ ๋งค๋‹ˆ์ €๋กœ ์ „์†กํ•œ๋‹ค.

Construct Thread

์ฐธ๊ณ 

Construct์˜ ์ด๋ ฅ ์ •๋ณด ๊ด€๋ฆฌ

Construct๋Š” ๋ ˆ์ฝ”๋“œ๋ณ„๋กœ ์–ด๋–ค redo ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ๋‚˜์˜จ ๊ฑด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋กœ๊ทธ ์‹œํ€€์Šค ์ •๋ณด์™€ ํ•ด๋‹น ๋กœ๊ทธ ํŒŒ์ผ์˜ ๋ช‡ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด(wrap#)๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ„์† ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

redo ๋กœ๊ทธ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋กœ๊ทธ ์Šค์œ„์น˜๊ฐ€ ์ผ์–ด๋‚˜๊ณ , ์ด๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ ์‹œํ€€์Šค ๊ฐ’์ด 1๊ฐœ์”ฉ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ์ƒˆ๋กœ์šด ๋กœ๊ทธํŒŒ์ผ์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค๊ณ  ์žˆ๋˜ ๋ ˆ์ฝ”๋“œ ์ •๋ณด ๋ฐ ์ด๋ ฅ ์ •๋ณด(๋กœ๊ทธ ์‹œํ€€์Šค, wrap#)๊ฐ€ ๋ฌผ๋ฆฌ ๋””์Šคํฌ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ๋‹ค.

Replay Thread

Worker Threads

Resource Thread

Stat Thread

๊ทธ๋ฆผ 2. Construct์˜ ํŠธ๋žœ์žญ์…˜ Hash
๊ทธ๋ฆผ 3. Replay๋กœ ๋„˜์–ด๊ฐ„ ํŠธ๋žœ์žญ์…˜
Inter Processes/Threads Communication