Community

๐Ÿ•Š๏ธ[Medium] Postgres vs MySQL

๊ฐ„๋‹จํžˆ ๋งํ•ด, ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฃผ์š”ํ•œ ์ฐจ์ด์ ์€ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค์™€ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.ย  MySQL ๊ธฐ๋ณธ ์ธ๋ฑ์Šค์—์„œ ๊ฐ’์€ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•œ ์ „์ฒด ํ–‰ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค(clustered indexes) ๋˜๋Š” ์ธ๋ฑ์Šค-์กฐ์งํ˜• ํ…Œ์ด๋ธ”(index-organized table)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ย  ๊ธฐ๋ณธ ์ธ๋ฑ์Šค์—์„œ ํ‚ค๋ฅผ ์กฐํšŒํ•˜๋ฉด ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€์™€ ํ•ด๋‹น ํ‚ค์˜ ๊ฐ’(์ฆ‰, ์ „์ฒด ํ–‰)์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด ์ถ”๊ฐ€ ์—ด์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ I/O๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ย  ๋ณด์กฐ ์ธ๋ฑ์Šค์—์„œ๋Š” ํ‚ค๊ฐ€ ์ธ๋ฑ์‹ฑ๋œ ์—ด(๋“ค)์ด๊ณ  ๊ฐ’์€ ์‹ค์ œ ํ–‰์ด ์œ„์น˜ํ•œ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ณด์กฐ ์ธ๋ฑ์Šค ๋ฆฌํ”„ ํŽ˜์ด์ง€์˜ ๊ฐ’์€ ์ฃผ๋กœ ๊ธฐ๋ณธ ํ‚ค์ž…๋‹ˆ๋‹ค. ย  MySQL์—์„œ๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋“  ์ถ”๊ฐ€ ๋ณด์กฐ ์ธ๋ฑ์Šค๋Š” ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. MySQL ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค PostgreSQL PostgreSQL์—์„œ๋Š” ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉฐ, ๋ชจ๋“  ์ธ๋ฑ์Šค๋Š” ๋ณด์กฐ ์ธ๋ฑ์Šค์ด๊ณ  ์‹œ์Šคํ…œ์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ํŠœํ”Œ ID๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ํž™์— ๋กœ๋“œ๋œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋Š” ๊ธฐ๋ณธ ์ธ๋ฑ์Šค ๋ฆฌํ”„ ํŽ˜์ด์ง€์™€ ๋‹ฌ๋ฆฌ ์ •๋ ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ–‰์„ 1-100๊นŒ์ง€ ์‚ฝ์ž…ํ•˜๊ณ  ๋ชจ๋“  ํ–‰์ด ๋™์ผํ•œ ํŽ˜์ด์ง€์— ์žˆ์„ ๋•Œ, ๋‚˜์ค‘์— 120๋ฒˆ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ด 20๊ฐœ์˜ ํ–‰์ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐํ˜• ๊ธฐ๋ณธ ์ธ๋ฑ์Šค์—์„œ๋Š” ํ‚ค์˜ ์ˆœ์„œ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ PostgreSQL ํ…Œ์ด๋ธ”์€ "ํž™ ์กฐ์งํ˜• ํ…Œ์ด๋ธ”(heap organized tables)"๋กœ ์ž์ฃผ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ย  PostgreSQL์—์„œ๋Š” ์—…๋ฐ์ดํŠธ์™€ ์‚ญ์ œ๊ฐ€ ์‹ค์ œ๋กœ ์‚ฝ์ž…์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋‚˜ ์‚ญ์ œ๋Š” ์ƒˆ๋กœ์šด ํŠœํ”Œ ID๋ฅผ ์ƒ์„ฑํ•˜๊ณ , MVCC(Multi-Version Concurrency Control) ์ด์œ ๋กœ ๊ธฐ์กด ํŠœํ”Œ ID๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Processes vs Threads MySQL์€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ์ด์œ ๋กœ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: * ๊ฒฝ๋Ÿ‰์„ฑ: ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๊ฐ€๋ฒผ์›Œ์„œ ์‹œ์Šคํ…œ ์ž์›์„ ๋œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. * ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ : ์Šค๋ ˆ๋“œ๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. * ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ: ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์€ TLB(Translation Look-aside Buffer)๋ฅผ ๋ฌดํšจํ™”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘์ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. PostgreSQL์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค: * ๋…๋ฆฝ์„ฑ: ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ๋œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํฌ๋ž˜์‹œํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. * PCB vs. TCB: ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)์ด ์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก(TCB)๋ณด๋‹ค ํฌ์ง€๋งŒ, ์ด๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ๋œ ์ž์›๊ณผ ํ™˜๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Summary ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•˜๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์ฟผ๋ฆฌ์— ๋งž๋Š” ์‹œ์Šคํ…œ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. MySQL์˜ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฐ€๋ฒผ์šด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๊ณผ ๋น ๋ฅธ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด, PostgreSQL์˜ ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋” ๋†’์€ ๋…๋ฆฝ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋” ์ ํ•ฉํ•œ์ง€๋Š” ์‚ฌ์šฉ์ž์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย  ๊ฒฐ๋ก ์ ์œผ๋กœ, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ๋” ์ข‹๋‹ค๊ณ  ๋‹จ์ • ์ง€์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ํ•„์š”์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ์—ญ: [https://ducktopia.tistory.com/128] ์›๋ฌธ:

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค