๐ง๐ป๐ปDB ํํฐ์ ๋
์๋น์ค์ ํฌ๊ธฐ๊ฐ ์ ์ ์ปค์ง๊ณ DB์ ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ๊ตฌ๋ชจ ๋ํ ๋์ฉ๋ํ ๋๋ฉด์, ๊ธฐ์กด์ ์ฌ์ฉํ๋ DB ์์คํ ์ ์ฉ๋์ ํ๊ณ์ ์ฑ๋ฅ์ ์ ํ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๊ณ VLDB์ ๊ฐ์ด ํ๋์ DBMS์ ๋๋ฌด ํฐ table์ด ๋ค์ด๊ฐ๋ฉด์ ์ฉ๋๊ณผ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ง์ ์ด์๊ฐ ๋ฐ์ํ๊ฒ ๋์๊ณ , ์ด๋ฐ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ํ ์ด๋ธ์ ํํฐ์ ์ด๋ผ๋ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌํ๋ ํํฐ์ ๋ ๊ธฐ๋ฒ์ด ๋ํ๋๊ฒ ๋์๋ค.
ํํฐ์ ๋์ ๋ ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ element๋ค์ ๋ค์์ entity๋ก ์ชผ๊ฐ๋ ํ์๋ฅผ ๋ปํ๋ ์ผ๋ฐ์ ์ธ ์ฉ์ด์ด๋ค. ํฐ ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ํํฐ์ ์ด๋ผ๋ ์์ ๋จ์๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. DB์ ์ ๊ทผํ๋ Application์ ์ ์ฅ์์๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ๋ถํ ์ด ์์ง๋ง ์ธ์ํ์ง ๋ชปํ๋ค.
ํํฐ์ ๋์ ๋ชฉ์ ์ผ๋ก๋ ์ฑ๋ฅ, ๊ฐ์ฉ์ฑ, ๊ด๋ฆฌ ์ด์ฉ์ฑ ๋ฑ์ด ์๋ค.
์ฑ๋ฅ์ ์ธ ์ธก๋ฉด์๋ ํน์ DML(Data Manipulation Language : ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด)๊ณผ Query์ ์ฑ๋ฅ์ ํฅ์ํ๊ณ , Full Scan์์ ๋ฐ์ดํฐ Access์ ๋ฒ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์จ๋ค. ๋, ๋์ฉ๋ Data Write ํ๊ฒฝ์ ํจ์จ์ ์ด๋ค.
๋ง์ Insert๊ฐ ์๋ OLTP ์์คํ ์์ Insert์์ ์ ์์ ๋จ์์ธ partition๋ค๋ก ๋ถ์ฐ์์ผ ๊ฒฝํฉ์ ์ค์ธ๋ค.
๊ฐ์ฉ์ฑ์ ์ธ ์ธก๋ฉด์๋ ๋ฌผ๋ฆฌ์ ์ธ ํํฐ์ ๋์ผ๋ก ์ธํด ์ ์ฒด์ ์ธ ๋ฐ์ดํฐ์ ํผ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค๊ณ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๊ณ , ๊ฐ ๋ถํ ์์ญ(partiton ๋ณ๋ก)์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฑ์ ํ๊ณ ๋ณต๊ตฌํ ์ ์๋ค.
ํ ์ด๋ธ์ patition ๋จ์๋ก Disk I/O๋ฅผ ๋ถ์ฐํ์ฌ ๊ฒฝํฉ์ ์ค์ด๊ธฐ ๋๋ฌธ์ UPDATE ์ฑ๋ฅ์ ํฅ์ํ๋ค.
๊ด๋ฆฌ ์ด์ฉ์ฑ ์ธก๋ฉด์๋ ํฐ ํ ์ด๋ธ๋ค์ ์ ๊ฑฐํ์ฌ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด ์ค๋ค.
๐ ํํฐ์ ๋ ์ฅ๋จ์
์ฅ์
- ๊ด๋ฆฌ์ ์ธก๋ฉด์์๋ ํํฐ์ ๋จ์์ ๋ฐฑ์ , ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ์ฌ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์์คํ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ค์ด ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๋ค.
- ํํฐ์ ๋จ์๋ก ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ํํฐ์ ๋จ์๋ก I/O๋ถ์ฐ์ด ๊ฐ๋ฅํ์ฌ UPDATE ์ฑ๋ฅ์ ํฅ์ํ๋ค.
- ์ฑ๋ฅ์ ์ธก๋ฉด์์๋ ํํฐ์ ๋จ์ ์กฐํ ๋ฐ DML ์ํ์ด ๊ฐ๋ฅํ์ฌ FULL SCAN์์ ๋ฐ์ดํฐ ํ์ฉ ๋ฒ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์จ๋ค.
- ํ์ํ ๋ฐ์ดํฐ๋ง ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ ์์ฒด๊ฐ ๊ฐ๋ณ๋ค.
๋จ์
- ํ ์ด๋ธ ๊ฐ ์กฐ์ธ์ ๋ํ ๋น์ฉ์ด ์ฆ๊ฐํ๊ณ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๋ณ๋๋ก ํํฐ์ ๋ ํ ์ ์๋ค.
- ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ด ํํฐ์ ๋ ํด์ผ ํ๋ค.
โก๏ธ์ํ ํํฐ์ ๋
ํ๋์ ํ ์ด๋ธ์ ๊ฐ ํ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ถ์ฐ์ํค๋ ๊ฒ์ด๋ค.
์ค๋ฉ()๊ณผ ๋์ผํ ๊ฐ๋ ์ด๊ณ ์คํค๋ง๋ฅผ ๋ณต์ ํ ํ ์ค๋ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๊ฒ์ ๋งํ๋ค.
์ฆ, ์คํค๋ง๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋๋์ด ์ ์ฅํ๋ ๊ฒ์ ๋งํ๋ค.
ํน์ง
- ํผํฌ๋จผ์ค, ๊ฐ์ฉ์ฑ์ ์ํด key ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๊ณณ์ ๋ถ์ฐ ์ ์ฅํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐ ์ ์ฅ ๊ธฐ์ ์์ ํํฐ์ ๋์ ์ํ ๋ถํ ์ ์๋ฏธํ๋ค.
- ๋ณดํต ์ํ ๋ถํ ์ ํ๋ค๊ณ ํ์ ๋๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๋ฅผ ์ง์นญํ๋ค.
์ฅ์
- ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์ด ํํฐ์ ๋ ํ๋ค.
- ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ์์์ง๊ณ ๋ฐ๋ผ์ ์ธ๋ฑ์ค์ ๊ฐ์๋ ์์์ง๊ฒ ๋๋ค. ์์ฐ์ค๋ฝ๊ฒ ์ฑ๋ฅ์ ํฅ์๋๋ค.
๋จ์
- ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ๊ณผ์ ์ด ๋ง์์ง๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ด ๊ธฐ์กด๋ณด๋ค ๋ณต์กํ๊ธฐ ๋๋ฌธ์ lantency๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ค.
- ํ๋์ ์๋ฒ๊ฐ ๊ณ ์ฅ ๋๊ฒ ๋๋ฉด ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ ์๋ค.
โก๏ธ์์ง ํํฐ์ ๋
ํ ์ด๋ธ์ ์ผ๋ถ ์ด์ ๋นผ๋ด๋ ํํ๋ก ๋ถํ ํ๋ค.
๋ชจ๋ ์นผ๋ผ๋ค ์ค ํน์ ์ปฌ๋ผ๋ค์ ์ชผ๊ฐ์ ๋ฐ๋ก ์ ์ฅํ๋ ํํ์ด๊ณ ์คํค๋ง๋ฅผ ๋๋๊ณ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ผ ์ฎ๊ฒจ ๊ฐ๋ ๊ฒ์ ๋งํ๋ค.์ฆ , ํ๋์ ์ํฐํฐ๋ฅผ 2๊ฐ์ด์์ผ๋ก ๋ถ๋ฆฌํ๋ ์์ ์ด๋ค.
๐ ์์ง ํํฐ์ ๋ ์ฅ์
- ์์ฃผ ์ฌ์ฉํ๋ ์ปฌ๋ผ ๋ฑ์ ๋ถ๋ฆฌ์์ผ ์ฑ๋ฅ์ ํฅ์ํ ์ ์๋ค.
- ํ ํ ์ด๋ธ์ SELECT ํ๋ฉด ๊ฒฐ๊ตญ ๋ชจ๋ ์นผ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ฒ ๋๋ฏ๋ก ํ์์๋ ์ปฌ๋ผ๊น์ง ์ฌ๋ผ๊ฐ์ ํ ๋ฒ์ ์ฝ์ ์ ์๋ ROW๊ฐ ์ค์ด๋ ๋ค. ์ด๋ I/O ์ธก๋ฉด์์ ๋ดค์ ๋ ํ์ํ ์ปฌ๋ผ๋ง ์ฌ๋ฆฌ๋ฉด ํจ์ฌ ๋ง์ ์์ ROW๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ์ ์์ผ๋ ์ฑ๋ฅ์์ ์ด์ ์ด ์๋ค.
- ๊ฐ์ ํ์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ ์ฅ ์ ๋ฐ์ดํฐ ์์ถ๋ฅ ์ ๋์ผ ์ ์๋ค.
๐กํํฐ์ ๋(partitioning) ๋ถํ ๊ธฐ์ค
๐Range Partitioning [๋ฒ์ ํํฐ์ ๋]
create table ์ฃผ๋ฌธ( ์ฃผ๋ฌธ๋ฒํธ number, ์ฃผ๋ฌธ์ผ์ varchar2(8), ๊ณ ๊ฐid varchar2(5) )
partition by range(์ฃผ๋ฌธ์ผ์) (
partition p2009_q1 values less than('20090401')
, partition p2009_q2 values less than('20090701')
, partition p2009_q3 values less than('20091001')
, partition p2009_q4 values less than('20100101')
, partition p2010_q1 values less than('20100401')
, partition p9999_mx values less than( MAXVALUE )
);
- ํํฐ์ ๋ ํ ์ด๋ธ์ ๊ฐ์ ์ ๋ ฅํ๋ฉด ๊ฐ ๋ ์ฝ๋๋ฅผ ํํฐ์ ํค ์ปฌ๋ผ ๊ฐ์ ๋ฐ๋ผ ๋ถํ ์ ์ฅํ๊ณ , ์ฝ์ ๋๋ ๊ฒ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํฐ์ ๋ง ์ฝ์ ์ ์์ด ๋ฐ์ดํฐ ์กฐํ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์ํด์ค๋ค.
- ํํฐ์ ํค๋ก๋ ํ๋ ์ด์์ ์นผ๋ผ์ ์ง์ ํ ์ ์๊ณ , ์ต๋ 16๊ฐ๊น์ง ํ์ฉ๋๋ค. ๋ณด๊ด ์ฃผ๊ธฐ ์ ์ฑ ์ ๋ฐ๋ผ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํํฐ์ ๋ง ๋ฐฑ์ ํ๊ณ ์ญ์ ํ๋ ๋ฑ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์์ ์ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋ ๊ฒ๋ ํฐ ์ฅ์ ์ด๋ค.
- ๊ด๋ฆฌ์์ ์ค์๋ก ์ ๊ท ํํฐ์ ์์ฑ์ ๋น ํธ๋ฆฌ๋ฉด ์์ด ๋๋ ์ฐ์ด์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋์ง ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฏ๋ก, maxvalue ํํฐ์ ์ ๋ฐ๋์ ์์ฑํด ๋๋ ๊ฒ์ด ์ข๋ค.
๐Hash Partitioning [ํด์ ํํฐ์ ๋]
- ํํฐ์ ํค์ ํด์ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ ๊ฐ์ด ๊ฐ์ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ํํฐ์ ์ธ๊ทธ๋จผํธ์ ์ ์ฅํด ๋๋ ๋ฐฉ์
- ๊ฒ์ํ ๋๋ ์กฐ๊ฑด์ ๋น๊ต ๊ฐ์ ํด์ํจ์๋ฅผ ์ ์ฉํด ์ฝ์ด์ผ ํ ํํฐ์ ์ ๊ฒฐ์ ํ๋ฉฐ, ํด์ ์๊ณ ๋ฆฌ์ฆ ํน์ฑ์ “==” ,“In-List” ์ด ๋ ์กฐ๊ฑด์ผ๋ก ๊ฒ์ํ ๋๋ง ํํฐ์ Pruning์ด ๋์ํ๋ค.
- ํ ์ด๋ธ ํํฐ์ ๋ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ๋๋ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ๋ ์ ์๋๋๊ฐ ์ค์ํ ๊ด์ฌ์ฌ์ด๋ค. ํด์ ํํฐ์ ๋ ํ ๋ ํนํ ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ์ ์คํ ๊ณ ๋ คํด์ผ ํ๋๋ฐ, ์ฌ์ฉ์๊ฐ ์ง์ ํํฐ์ ๊ธฐ์ค์ ์ ํ๋ Range, ๋ฆฌ์คํธ ํํฐ์ ๋๊ณผ ๋ค๋ฅด๊ฒ ํด์ ํํฐ์ ๋์ ํํฐ์ ๊ฐ์๋ง ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ํ๋ค.
๐List Partitioning
create table ์ธํฐ๋ท๋งค๋ฌผ( ๋ฌผ๊ฑด์ฝ๋varchar2(5), ์ง์ญ?๋ฅvarchar2(4) )
partition by list(์ง์ญ?๋ฅ)
(partition p_์ง์ญ1 values ('์์ธ'),
partition p_์ง์ญ2 values ('๊ฒฝ๊ธฐ', '์ธ์ฒ'),
partition p_์ง์ญ3 values ('๋ถ์ฐ', '๋๊ตฌ', '๋์ ', '๊ด์ฃผ'),
partition p_๊ธฐํvalues (DEFAULT) ) ;
- ์์์ ์๊ด์์ด ๋ถ์ฐ์์ ์ธ ๊ฐ์ ๋ชฉ๋ก์ผ๋ก์จ ๊ฒฐ์ ๋๋ค.
- ๋จ์ผ ์นผ๋ผ์ผ๋ก๋ง ํํฐ์ ํค๋ฅผ ์ง์ ํด์ผ ํ๋ค.
- ๋ฆฌ์คํธ ํํฐ์ ์๋ defaultํํฐ์ ์ ์์ฑํด ๋์ด์ผ ์์ ํ๋ค.
๐๊ฒฐํฉ ํํฐ์ ๋
- ๊ฒฐํฉ ํํฐ์ ๋์ ๊ตฌ์ฑํ๋ฉด์ ์๋ธ ํํฐ์ ๋ง๋ค ์ธ๊ทธ๋จผํธ๋ฅผ ํ๋์ฉ ํ ๋นํ๊ณ ์๋ธ ํํฐ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ์ฃผ ํํฐ์ ํค์ ๋ฐ๋ผ 1์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฐฐํ๊ณ , ์๋ธ ํํฐ์ ํค์ ๋ฐ๋ผ ์ต์ข ์ ์ผ๋ก ์ ์ฅํ ์์น๋ฅผ ๊ฒฐ์ ํ๋ค.
'Dev > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MYSQL] MYSQL Partition - ํ ์ด๋ธ ๋ถํ (0) | 2022.02.24 |
---|---|
[mybatis] Association๊ณผ Collection (0) | 2022.02.22 |
[AWS]RDS Mysql Replication ์ค์ (SpringBoot + JPA + Mysql) (0) | 2021.11.10 |
[MYSQL]ํจ์จ์ ์ธ ํธ๋ํฝ ๋ถ์ฐ์ ์ํ Master/Slave ๋์ ๋ผ์ฐํ (0) | 2021.10.24 |
[DB]ํธ๋์ญ์ (transaction) (0) | 2021.09.14 |