【发布时间】:2012-01-11 19:13:24
【问题描述】:
我有一个每天晚上都会处理的日志表。将对昨天记录的数据进行处理。处理完成后,我想删除当天的数据。同时,我有当天的新数据进入表格。我根据星期几对表格进行了分区。我希望我可以同时删除数据和插入数据而不会发生争用。每天可能处理多达 300 万行数据。我已经搜索了信息,但没有找到任何可以证实我的假设的信息。
我不想像在其他示例中看到的那样编写添加分区和删除分区的作业的麻烦。我希望使用七个部分来实施解决方案。例如。
CREATE TABLE `professional_scoring_log` (
`professional_id` int(11) NOT NULL,
`score_date` date NOT NULL,
`scoring_category_attribute_id` int(11) NOT NULL,
`displayable_score` decimal(7,3) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`professional_id`,`score_date`,`scoring_category_attribute_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (DAYOFWEEK(`score_date`))
(PARTITION Sun VALUES LESS THAN (2) ENGINE = InnoDB,
PARTITION Mon VALUES LESS THAN (3) ENGINE = InnoDB,
PARTITION Tue VALUES LESS THAN (4) ENGINE = InnoDB,
PARTITION Wed VALUES LESS THAN (5) ENGINE = InnoDB,
PARTITION Thu VALUES LESS THAN (6) ENGINE = InnoDB,
PARTITION Fri VALUES LESS THAN (7) ENGINE = InnoDB,
PARTITION Sat VALUES LESS THAN (8) ENGINE = InnoDB) */
当我处理昨天数据的工作完成后,它将删除 score_date = current_date-1 的所有记录。在任何时候,我可能只会将数据放在一两个分区中,具体取决于一天中的时间。
我的假设有什么漏洞吗?
【问题讨论】:
标签: mysql sql-delete database-partitioning