![[PostgreSQL] MVCC (Multi-Version Concurrency Control)](/images/posts/15/img.png)
[PostgreSQL] MVCC (Multi-Version Concurrency Control)
1.ย MVCC๋? ๋์์ฑ ์ ์ด๋ฅผ ์ํด lock์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ณผ ๋ฌ๋ฆฌ Postgres๋ ๋ค์ค ๋ฒ์ ๋ชจ๋ธ(multiversion model)์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ค. ๊ฐ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌ ํ๋ ๋์ ๋ฐ์ดํฐ์ ํ์ฌ ์ํ์ ๊ด๊ณ์์ด ์ผ๋ง ์ ์ ๋ฐ์ดํฐ ์ค๋ ์ท์ ๋ณผ ์ ์์์ ์๋ฏธํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌ ํ๊ธฐ ์ํด ํธ๋์ญ์ ์ ๋ง๋ค์๋ค๋ฉด ํด๋น Transaction์ ๋ฐ์ดํฐ์ ์ค๋ ์ท์ ๋ณด๊ณ ์๋ ๊ฒ์ด๋ค. ๋์ผํ ํ์ ์๋ก ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋์์ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ ๋, ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋์ง ์๋๋ก ํธ๋์ญ์ ์ ๋ณดํธํ์ฌ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ ์ ๋ํ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค. Multiversion๊ณผ Lock model์ ์ฃผ์ ์ฐจ์ด์ ์ MVCC์์ ๋ฐ์ดํฐ read๋ฅผ ์ํด ํ๋ํ lock๊ณผ ๋ฐ์ดํฐ ์ฐ๊ธฐ๋ฅผ ์ํด ํ๋ํ lock์ด ์ถฉ๋ํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. (๋ฐ๋ผ์ read์ write๋ ์๋ก block ํ์ง ์๋๋ค.) ์ด๋ฌํ ๋ฐฉ์์ ํตํด์ Reading ํ๋ ์์ ์ ๋ํด์ Lock์ ๊ฑธ์ง ์๊ธฐ์ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์๊ฒ ๋๋ค. ...
![[PostgreSQL] ๋ฏธ์ฌ์ฉ ์ธ๋ฑ์ค(INDEX) ์ฐพ๊ธฐ ๋ฐ ์ญ์ , ์ฑ๋ฅํฅ์](/images/posts/14/img.png)

![[PostgreSQL] ๋ฌธ์์ด๋ด ์ค๋ณต ๊ณต๋ฐฑ, ๋จ์ด ์ ๊ฑฐ](/images/posts/12/img.png)
![[PostgreSQL] BRIN ์ธ๋ฑ์ค์ ์๋ฆฌ ๋ฐ ํน์ง](/images/posts/11/img.jpg)