Concurrency Control - KimJangHyeon/MyDBMS GitHub Wiki

CC

txn ํ• ๋‹น

g_trx

  • ๊ธ€๋กœ๋ฒŒ trx๋กœ ํ• ๋‹นํ•ด์ค„ trx์ด๋‹ค.

fetch_and_add๋กœ N๊นŒ์ง€ ํ• ๋‹น ๋งŒ์•ฝ g_trx >= N์ด๋ฉด g_trx์€ compare_and_swap์„ ์ด์šฉํ•˜์—ฌ g_trx์„ 1์œผ๋กœ ์ „ํ™˜ -> ์‹คํŒจ์‹œ, while๋กœ ๊ณ„์† ์‹œ๋„

  • ๋‹ค๋ฅธ thread๊ฐ€ g_trx๋กœ ์ ‘๊ทผํ•˜์—ฌ g_trx์˜ ๊ฐ’์„ ์ฆ๊ฐ€ ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ

๊ตฌํ˜„ํ•œ ํ•จ์ˆ˜ ๋ฐ ํด๋ž˜์Šค

image

get_pid(tid, key)

  • find_leaf๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น key์— ํ•ด๋‹นํ•˜๋Š” offset์„ ๋ฐ›์•˜๋‹ค.

  • find, update๋ฐ–์— ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๊ฐ€ ๋‚ ์•„๊ฐˆ ์ผ์€ ์—†์Œ ์ฆ‰, ํŽ˜์ด์ง€์˜ isLeaf๋น„ํŠธ๊ฐ€ ํšŒ์†๋  ์ผ๋„ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ๋ฐ›์•„์˜จ offset์€ ์•ˆ์ „ํ•˜๋‹ค.

  • return ๊ฐ’์€ offset + tid๋กœ ์ •ํ–ˆ๋‹ค.

  • ์ฆ๋ช… image ๋‹ค์Œ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์€ n = n' ์ด๊ณ  k = k'๋ฟ์ด๋ฏ€๋กœ (k์™€ k'์ด 1<= k, k` <= 10 ์ด๊ธฐ ๋•Œ๋ฌธ) pid๋กœ ์ ํ•ฉํ•˜๋‹ค.

make_lock

  • lock์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์ด๋‹ค. CCํด๋ž˜์Šค์˜ find_trx_pointerํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ๋ฝ์˜ trx์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ค€ ์ฑ„๋กœ ๋‚˜์˜จ๋‹ค.

CC::get_trx

  • trx๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค.(__sync_fetch_and_add๋ฅผ ์‚ฌ์šฉ) image ๋˜ํ•œ trx_arr์—์„œ ๋น„์–ด์žˆ๋Š” ๊ณณ์„ CAS๋ฅผ ํ†ตํ•ด์„œ ํ• ๋‹นํ•ด์ค€๋‹ค. (get_trx๋Š” latch๋กœ ์žกํ˜€์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ)

CC::marking_lock

  • ๋ฝ์„ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.
  • return ๊ฐ’์œผ๋กœ ์ด operation์ด ์‹คํ–‰๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ 1์„ ์•„๋‹Œ ๊ฒฝ์šฐ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. image

buffer mult test

value๋ฅผ global๋กœ ๋‘๊ณ  99๋ฒˆ์˜ find๋งˆ๋‹ค ์ด value๋ฅผ fetch and add๋กœ ์ฆ๊ฐ€ ์‹œํ‚จ ๊ฐ’์„ ์ ์šฉํ•˜๋Š” update๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” thread 5๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  find์˜ ๊ฒฐ๊ณผ๋ฅผ lock์„ ๊ฑธ์–ด์„œ ๋ฐ”๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜์˜€๋‹ค. image ์ด๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฒ„ํผ์˜ ์‚ฌ์ด์ฆˆ๋Š” 1๋กœ ๋‘์–ด checkpoint๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค. imageimageimage ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅด๋ฉด ํ”„๋ฆฐํŠธ์˜ ์ˆœ์„œ๊ฐ€ ์„ž๊ธฐ์ง€ ์•Š๊ณ  ์™„์ „ํžˆ linearํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฆ‰, ์—…๋ฐ์ดํŠธ ๋„์ค‘์— ๊ฐ’์ด ์ฝํžˆ์ง€ ์•Š๊ณ (isolate) ํ•œ๋ฒˆ ์—…๋ฐ์ดํŠธ ๋œ๊ฒƒ์€ readํ• ๋•Œ ๋ฐ˜์ •์ด ๋œ๋‹ค.(durability) ๋˜ํ•œ ๋ฒ„ํผ์—์„œ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค๊ฐ”๋‹ค ์˜ฌ๋ผ์˜ค๋Š” ์‚ฌ์ด์—๋„ ์•ˆ์ •์„ฑ์ด ๋ณด์žฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.