You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/database/sqls/partitioned_logs.sql

41 lines
1.8 KiB
SQL

-- Partitioned logs table draft
-- 目标:按月分区日志表,提升写入吞吐和查询历史的性能
-- 说明:本草案为初步设计,待评审后落地实现
-- Assumptions:
-- - MariaDB 10.x 版本,支持分区按 RANGE (TO_DAYS(log_time))
-- - 日志字段与现有采集日志表接近
-- - 每月一个分区,覆盖历史数据的归档策略待定
DROP TABLE IF EXISTS logs_partitioned;
CREATE TABLE logs_partitioned (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
machine_id INT NOT NULL,
program_name VARCHAR(128) NOT NULL,
log_time DATETIME NOT NULL,
log_level VARCHAR(16) DEFAULT 'INFO',
raw_payload JSON,
analysis_summary TEXT,
analysis_version VARCHAR(64) DEFAULT 'v1',
-- 便于按机床与时间筛选的组合索引
KEY idx_machine_time (machine_id, log_time),
KEY idx_program_time (program_name, log_time)
)
PARTITION BY RANGE (TO_DAYS(log_time)) (
PARTITION p202401 VALUES LESS THAN (TO_DAYS('2024-02-01')),
PARTITION p202402 VALUES LESS THAN (TO_DAYS('2024-03-01')),
PARTITION p202403 VALUES LESS THAN (TO_DAYS('2024-04-01')),
PARTITION p202404 VALUES LESS THAN (TO_DAYS('2024-05-01')),
PARTITION p202405 VALUES LESS THAN (TO_DAYS('2024-06-01')),
PARTITION p202406 VALUES LESS THAN (TO_DAYS('2024-07-01')),
PARTITION p202407 VALUES LESS THAN (TO_DAYS('2024-08-01')),
PARTITION p202408 VALUES LESS THAN (TO_DAYS('2024-09-01')),
PARTITION p202409 VALUES LESS THAN (TO_DAYS('2024-10-01')),
PARTITION p202410 VALUES LESS THAN (TO_DAYS('2024-11-01')),
PARTITION p202411 VALUES LESS THAN (TO_DAYS('2024-12-01')),
PARTITION p202412 VALUES LESS THAN (TO_DAYS('2025-01-01')),
PARTITION p202501 VALUES LESS THAN (TO_DAYS('2025-02-01'))
);
-- 备注:
-
- ALTER TABLE logs_partitioned REORGANIZE PARTITION ...?