이제 막 mysql을 접해보는 노땅입니다.
염치없게도 웹서핑으로 찾다찾다 여기까지 오게 됐네요.
우선 상황을 설명드리자면 다음과 같습니다.
----------------------------------------------------
매일매일 쌓이는 IP리스트가 있습니다. 이 IP리스트는
1. 그 건 수가 매우 많고,
2. 유동적이기 때문에 그날 그날의 스냅샷 형태로 저장되어야 합니다. (날짜별 uniq한 IP값을 가짐. primarykey를 날짜, IP 이렇게 줬습니다.)
매일매일 새로운 파티션이 생성이 되어야 하므로 수동으로 적어주는 일은 상당히 번거로울 것입니다.
그래서, 제가 선택한 방법은 다음과 같습니다.
질문1. 제대로 파티셔닝을 한 것이 맞는지?
질문2. 요놈이 제대로 파티셔닝이 되고 있는지를 어떻게 확인하면 좋을지요???
고수님들의 답변을 기다립니다. ㅠ.ㅠ
=================================================
#create SPAM_RBL table
create table SPAM_RBL (
ts datetime not null,
int_ip int unsigned not null,
PRIMARY KEY ( `ts`, `int_ip` )
)
PARTITION BY RANGE( TO_DAYS( ts ) )
(
PARTITION pmax VALUES LESS THAN MAXVALUE
#create EVENT
DELIMITER $
CREATE EVENT logs_add_partition ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE+1,'00:00:01')
DO
BEGIN
DECLARE new_partition CHAR(32) DEFAULT
CONCAT ('p', DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 DAY), '%Y%m%d'));
DECLARE max_day INTEGER DEFAULT TO_DAYS(NOW()) +2;
SET @s = CONCAT('ALTER TABLE logs ADD PARTITION (PARTITION ', new_partition, ' VALUES LESS THAN (', max_day, '))');
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $
DELIMITER ;
=========================== |