2.5 ๐ป Index ์ค์ต#
๋ฐ์ดํฐ ์์ง๋์ด๊ฐ ์์ ์ ์ํํ ๋ ์ ์ ํ Index๋ฅผ ์ค์ ํจ์ผ๋ก์จ ๋ฐ์ดํฐ ์์ธ์ค ์ฑ๋ฅ์ ์ต์ ํ ํ๊ณ ์ฟผ๋ฆฌ ์คํ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์ต๋๋ค.
์ด๋ฒ ์คํ์์๋ Postgresql์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ B-Tree Index์ Brin Index๋ฅผ ๋น๊ตํด๋ด์ผ๋ก์จ ์ํฉ์๋ฐ๋ฅธ Index์ ํ์ ๋ํด ์์๋ณด๊ณ ์ ํฉ๋๋ค.
์์ ์ ์ปดํจํ ๋ฆฌ์์ค, ๋ฐ์ดํฐ ํฌ๊ธฐ, ๊ฒ์์กฐ๊ฑด, ๋ฐ์ดํฐ ํน์ฑ ๋ฑ ๋ค์ํ ์์๋ฅผ ๊ณ ๋ คํ์ฌ Index๋ฅผ ์ค์ ํ์ฌ์ผ ํฉ๋๋ค.
B-Tree Index (Balanced Tree Index)#
B-Tree ์ธ๋ฑ์ค๋ ํค ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ปฌ๋ผ์ ๊ฐ์ด ๋ค์ํ๊ณ ์ค๋ณต๋์ง ์๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์ ํจ๊ณผ๋ฅผ ์ต๋ํํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ๊ท ๋ฑํ ์๋๋ฅผ ๋ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
BRIN Index (Block Range Index)#
BRIN ์ธ๋ฑ์ค๋ ํ์ด์ง์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค.
๋๋์ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ ์๊ณ์ด ๋ฐ์ดํฐ์ ๊ฐ์ด ์ฐ์์ ์ธ ํน์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ์์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
์คํ#
์ค์ต Repository๋ฅผ Cloneํ์ฌ ์ง์ ์ค์ตํด๋ณด๋๋ก ํฉ๋๋ค.
์ค๋น๋ ์ค์ตํ๊ฒฝ์ PK์ค์ ์ด ๋์ด์์ง ์๊ณ , ๋ณ๋ ฌ์ฒ๋ฆฌ์ ๋ํ ๊ณ ๋ ค๊ฐ ๋์ด์์ง ์์ต๋๋ค.
์ค๋นํ ์ค์ต1
: 126,269,471๊ฑด์ row์ ๋ํด ์คํ (๋ ์ง์ ๋ํด์ ์ธ๋ฑ์ค)
์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ: 15868.808 ms
B Tree Index๊ฐ ์๋ ๊ฒฝ์ฐ: 738.754 ms (2705 MB)
Brin Index๊ฐ ์๋ ๊ฒฝ์ฐ: 1085.056 ms (192 kB)
Index๋ฅผ ์ค์ ํจ์ผ๋ก์จ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ ์ ๋๋ ๋น์ทํ์ง๋ง Index ํฌ๊ธฐ๋ Brin Index๊ฐ ํจ์ฌ ์์ต๋๋ค.
์ค๋นํ ์ค์ต2
: 126,269,471๊ฑด์ row์ ๋ํด ์คํ (Alphabet์ ๋ํด์ ์ธ๋ฑ์ค)
์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ: 17285.917 ms
B Tree Index๊ฐ ์๋ ๊ฒฝ์ฐ: 15827.413 ms (835 MB)
Brin Index๊ฐ ์๋ ๊ฒฝ์ฐ: 17893.296 ms (152 kB)
์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋นํด์ ์ฑ๋ฅ์ด ํฌ๊ฒ ๋์์ง์ง ์์์์ ๋ณผ ์ ์์ต๋๋ค.
Brin Index์ ๊ฒฝ์ฐ์ ์ธ๋ฑ์ค๊ฐ ์๋๊ฒฝ์ฐ๋ณด๋ค ์คํ๋ ค ๋๋ ค์ก์์ ๋ณผ ์ ์์ต๋๋ค.