본문으로 바로가기

안녕하세요 안젤라입니다 😇

오늘은 새로운 테이블 생성할때 함께 파티셔닝 설정하기에 대해서 포스팅을 준비했습니다.


새로운 테이블 생성 시 파티셔닝 추가 쿼리

CREATE TABLE tb_api_log
(
    id           BIGINT UNSIGNED AUTO_INCREMENT COMMENT 'API 로그 ID',
    type         VARCHAR(3)                         NOT NULL COMMENT 'API 타입 (S: 송신, R: 수신, E: 에러)',
    target       VARCHAR(10)                        NOT NULL COMMENT '요청 타겟 (core, api)',
    method       VARCHAR(10)                        NOT NULL COMMENT '요청자 메소드',
    url          VARCHAR(255)                       NOT NULL COMMENT '요청자 주소',
    ip           VARCHAR(50)                        NOT NULL COMMENT '요청자 IP',
    content      JSON                               NULL COMMENT '요청 또는 처리에 대한 내용 (JSON 형식)',
    created_date DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT 'API 로그 등록 시간',
    PRIMARY KEY (id, created_date)
) COMMENT 'API 통신로그' CHARSET = utf8mb4
                     COLLATE = utf8mb4_general_ci
    PARTITION BY RANGE (TO_DAYS(created_date)) (
        PARTITION p202301 VALUES LESS THAN (TO_DAYS('2023-02-01')),
        PARTITION p202302 VALUES LESS THAN (TO_DAYS('2023-03-01')),
        PARTITION p202303 VALUES LESS THAN (TO_DAYS('2023-04-01')),
        PARTITION p202304 VALUES LESS THAN (TO_DAYS('2023-05-01')),
        PARTITION p202305 VALUES LESS THAN (TO_DAYS('2023-06-01')),
        PARTITION p202306 VALUES LESS THAN (TO_DAYS('2023-07-01')),
        PARTITION p202307 VALUES LESS THAN (TO_DAYS('2023-08-01')),
        PARTITION p202308 VALUES LESS THAN (TO_DAYS('2023-09-01')),
        PARTITION p202309 VALUES LESS THAN (TO_DAYS('2023-10-01')),
        PARTITION p202310 VALUES LESS THAN (TO_DAYS('2023-11-01')),
        PARTITION p202311 VALUES LESS THAN (TO_DAYS('2023-12-01')),
        PARTITION p202312 VALUES LESS THAN (TO_DAYS('2024-01-01')),
        PARTITION pmax VALUES LESS THAN (MAXVALUE)
        );

CREATE INDEX idx_type ON tb_api_log(type);
CREATE INDEX idx_target ON tb_api_log(target);
CREATE INDEX idx_method ON tb_api_log(method);
CREATE INDEX idx_url ON tb_api_log(url);
CREATE INDEX idx_ip ON tb_api_log(ip);

테이블은 idcreated_date 열을 기반으로 한 주요 키를 가지고 있으며, 날짜에 따라 파티션을 나누어 데이터를 효과적으로 저장하도록 구성되어 있습니다. 또한, 다양한 검색을 위해 type, target, method, url, ip 열에 대한 인덱스가 생성되어 있습니다.


오늘도 조금 더 성장하는 하루가 되었길 바랄게요 🙏