안녕하세요.
MySQL 테이블 파티셔닝 관련해서 고민중이 내용이 있어서 조언을 구하고자 글을 남깁니다.
10년치 데이터 테이블은 연도별로 나누려고 합니다.
테이블 파티셔닝이라는게 있던데, Range 파티셔닝을 이용해서 테이블 파티셔닝을 했을때와
테이블은 단순히 한개의 기준일자를 잡아서 연도별로 나누는것과 비교를 하면 어떤 장단점이 있는지 궁금합니다.
1. 테이블 파티셔닝
ListTable이라는 1개의 테이블에 10년치 데이터를 넣고, 아래와 같이 관리하는 방법
ALTER TABLE `ListTable` PARTITION BY RANGE (TO_DAYS(`regDt`)) (
PARTITION P_2019 VALUES LESS THAN (TO_DAYS('2020-01-01')) ENGINE = MYISAM,
PARTITION P_2020 VALUES LESS THAN (TO_DAYS('2021-01-01')) ENGINE = MYISAM,
......
)
2. 단순 테이블 나누기
ListTable_2019, ListTable_2020, ListTable_2021 ....
이런식으로 전부 테이블을 만들고 데이터를 관리하는 방법
위와 같이 했을 때, 만약 regDt 범위를 2019.05.01 ~ 2020.12.31 이렇게 검색을 한다면
1번의 경우 select * from ListTable where regDt between '2019-05-01' and '2020-12-31' 이렇게 단순하게 하면 될것 같지만
2번의 경우 (select * from ListTable_2019 where where regDt between '2019-05-01' and '2020-12-31') UNION ALL (select * from ListTable_2020 where where regDt between '2019-05-01' and '2020-12-31') 이렇게 하는게 맞는지요?
정리를 하자면,
질문1. 테이블 파티셔닝과 테이블을 단순하게 나눴을때의 장단점이 어떤게 있는지 궁금합니다.
질문2. regDt 범위를 2019.05.01 ~ 2020.12.31 이렇게 검색한다면 제가 생각하는게 맞는건지 궁금합니다. 2번의 경우 더 나은방법이 있는지도 궁금합니다.
https://velog.io/@ryuhyewon/%ED%8C%8C%ED%8B%B0%EC%85%98-%EC%9E%A5%EB%8B%A8%EC%A0%90
¹®¼ Âü°íÇÏ½Ã¸é µÉ °Í °°½À´Ï´Ù.
Å×À̺íÀ» ºÐÇÒÇØ
UNION ALL À» »ç¿ëÇØ¾ß ÇÒ °æ¿ì°¡ ¸¹´Ù¸é ÆÄƼ¼Å´× ÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.
µ¥ÀÌÅÍ°¡ ¾ó¸¶³ª ¸¹ÀºÁö ¸ð¸£°ÚÁö¸¸ ´ë¿ë·®ÀÌ ¾Æ´Ï¸é ÆÄƼ¼Å´×µµ ÇÏÁö ¾Ê¾Æµµ ...
1. Å×À̺í ÆÄƼ¼Å´×Àº ¾îÇø®ÄÉÀ̼ÇÀ» ¼öÁ¤ÇÏÁö ¾Ê¾Æµµ µÇ´Â°Ô ÀåÁ¡À̶ó°í »ý°¢ÇÕ´Ï´Ù.
Å×À̺íÀ» ´Ü¼øÇÏ°Ô ³ª´©´Â°Ç ¾îÇø®ÄÉÀ̼ÇÀÌµç ¾Æ´Ï¸é À̺¥Æ® ½ºÄÉÁÙ·¯¸¦ °Éµç Ãß°¡ ÀÛ¾÷ÀÌ ÇÊ¿äÇϴٴ°Å.. °³¹ßÀÚ´Â ºý¼¼Áö¸¸ ¾î·µç ´«¿¡ º¸ÀÌ´Â °ü¸®¶ó´Â°Ô ÀåÁ¡ÀÎ°Í °°°í¿ä.
2. ÆÄƼ¼Å´×µÈ Å×À̺íÀº »ý°¢ÇϽŠ´ë·Î ¾²¸é µÇ°í¿ä.
´Ü¼øÇÏ°Ô ³ª´« Å×ÀÌºíµµ ±×·±½ÄÀ¸·Î ÇÏ½Ã¸é µË´Ï´Ù. º¹ÀâÇÏÁÒ...
±×·¡¼ ´ëÇü ¼îÇθô(Áö¸¶ÄÏ,11¹ø°¡,ÄíÆÎ,µîµîµî..) ¸ðµç ÀºÇàµé º¸½Ã¸é ¹üÀ§ °Ë»öÀÌ Á¦ÇÑÀû ÀÏ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù.. ÃÖ±Ù ¸î´Þ ¶Ç´Â ¾ðÁ¦ºÎÅÍ ¾ðÁ¦±îÁö ÁöÁ¤.
°³ÀÎÀûÀÎ »ý°¢À¸·Î °³¹ß,¼¹ö,¿î¿µ,±âȹ,¿¹»ê µîµî ´«¾ÕÀÇ Çö½ÇÀº »óȲ¸¶´Ù ´Ù¸£±â¿¡ Á¤ÇØÁø Á¤´äÀº µû·Î ¾ø´Ù°í º¾´Ï´Ù.
°¡·É ¹¹ °í¼º´É/°í¿ë·® u.2 ssd ·¹À̵å À̺üÀÌ ¹´Â ½ÄÀ¸·Î Áï, Çϵå¿þ¾î·Î ¹Ð¾î ºÙÀÌ´Â °Í ¶ÇÇÑ °¡´ÉÇÑ ¹æ¹ýÀÌ µÉ ¼ö ÀÖÁÒ
ƯÁ¤ºÎºÐ °Ë»öÇÒ·Á°í ÇÏ¸é ¼û³Ñ¾î°©´Ï´Ù. ±×·±µ¥ ÀÌ°É Å×À̺í´ÜÀ§·Î ÂÉ°³¹ö¸®¸é ¾îÇø®ÄÉÀÌ¼Ç ´Ü¿¡µµ ÄÚµùÀ» ´Ù½ÃÇؾߵǴ ¹®Á¦°¡ »ý±â°Ô µË´Ï´Ù.
±×·¡¼ Å×À̺í ÆÄƼ¼ÇÀ̶õ°Ô ÇÊ¿äÇÑ°Ì´Ï´Ù.
°Ë»ö¹üÀ§°¡ ÆÄƼ¼Ç´ÜÀ§·Î ±¸ºÐµÇ´Ùº¸´Ï ¼º´ÉÀÌ ÈξÀ °³¼±µË´Ï´Ù.
MySQLÀº ÆÄƼ¼Ç±îÁö¸¸ Áö¿øµÇ´ÂÁö´Â ¸ð¸£°ÚÀ¸³ª MSSQL ±âÁØÀ¸·Î º»´Ù¸é ÆÄƼ¼Ç ±¸ºÐº°·Î ¾ÐÃàÅ×À̺íÀ» ÁöÁ¤ÇÒ¼ö°¡ ÀÖ°í Å×ÀÌÅÍ ³¯¸±¶§µµ ÆÄƼ¼ÇID·Î Çѹ濡 ³¯¸±¼ö ÀÖ¾î¼ À¯Áö°ü¸®Çϴµ¥µµ ÈξÀ ¿ëÀÌÇÕ´Ï´Ù.
Å×À̺íÆÄƼ¼ÇÀÇ ±âÁØÀº ´ë¿ë·®À̶ó´Â ±âÁØ°ú ¼º´É°ú À¯Áö°ü¸®¿¡ ÀÖ½À´Ï´Ù.
±×³É Å×À̺íÀ» ºÐ¸®ÇÕ´Ï´Ù
Á»´õ º¹ÀâÇÏ°ÔÇÏ¸é ½Ç½Ã°£ db¿ëÀ¸·ÎÇÏ°í
ÀÌÀü ³â´ÜÀ§ µ¥ÀÌÅÍ´Â ´Ù¸¥ db¿¡ ³Ö¾î¹ö¸®°í
½Ç½Ã°£ ¿î¿µ¿¡ ÇÊ¿äÇÑ db´Â º¹Á¦ db¸¸µé¾î¼ ½Ç½Ã°£ ¹é¾÷ db·Î µ¿±âÈÇÕ´Ï´Ù
ÀåÁ¡Àº º¹±¸°¡ ÇÊ¿äÇÒ¶§ ¿ë·®ÀÌ ÁÙ¾îµé¾î¼ ¸îºÐ³»·Î ÇѴٴ°ŠÇϳª¹Û¿¡ ¾ø½À´Ï´Ù¸¸
¼ºñ½º¿ëµµ´Â ÀÌÁ¤µµ±îÁö Çغþú³×¿ä