Apply ํ๋ก์ธ์ค์ ๋ํ์ฌ ์ค๋ช ํ๋ค.
Apply ํ๋ก์ธ์ค๋ ์ ํ ์ค๊ณ์์๋ ์ธ๊ธํ๋ฏ์ด Chunk ๋จ์๋ก ๋ ์ฝ๋๋ฅผ ์ ๋ฌ๋ฐ๊ณ ํด๋น ๋ ์ฝ๋๋ฅผ ํธ๋์ญ์ ๋ณ๋ก ๋ชจ์์ค๋ค. ํธ๋์ญ์ ์ Commit์ด ์ค๋ฉด ํด๋น ํธ๋์ญ์ ์ ์ค์ ๋ฐ์ ๋จ๊ณ์ ๋ค์ด๊ฐ ๋์์ด ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์๋๋ค.
๋ณธ ์ฅ์์๋, ์ค์ apply ํ๋ก์ธ์ค์ ๊ตฌ์กฐ๋ฅผ ์์ธํ ์ค๋ช ํ๋ค.
Apply ํ๋ก์ธ์ค๋ ์์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์์ ์์ ProSync์ ๊ธฐ๋ณธ Thread ๊ตฌ์กฐ๋ฅผ ์ธ๊ธํ ๋ฐ ์๋๋ฐ, Apply๋ ๋ง์ฐฌ๊ฐ์ง๋ก Main์ด ๋๋ Control Thread๊ฐ ์๊ณ ์ด์ธ์ Worker Thread๋ค์ด Control Thread ํ์ ๊ณ์ธต์ ๊ตฌ์ฑ๋์ด ์๋ค.
๋๊ธฐํ์ ํ์ํ Thread๋ Construct Thread์ Replay Thread๋ก ํฌ๊ฒ ๋ ๊ฐ์ง์ด๋ฉฐ, ๋๋จธ์ง๋ ๋ชจ๋ Worker 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 ํ๋ก์ธ์ค๋ฅผ ํตํด ์์งํ ๊ฐ์ ํ๋ก์ฑํฌ ๋งค๋์ ๋ก ์ ์กํ๋ค.


