gpt4 book ai didi

mysql - 使用mysql分区表删除优化(MySQL 5.1)

转载 作者:行者123 更新时间:2023-11-29 00:50:24 25 4
gpt4 key购买 nike

我有一个每晚都会处理的日志表。将对昨天记录的数据进行处理。处理完成后,我想删除当天的数据。同时,我有当天的新数据进入表格。我根据星期几对表进行了分区。我希望我可以同时删除数据和插入数据而不会发生争用。每天可能处理多达 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 的记录。在任何时候,我可能只会将数据存储在一个或两个分区中,具体取决于一天中的时间。

我的假设有什么漏洞吗?

最佳答案

查理,我看不出你的逻辑/假设有任何漏洞。

我想我的一个评论是为什么不使用删除/添加分区语法?它必须比 DELETE FROM .. Where ..; 更有效这只是两次调用 - 没什么大不了的 - 存储“原型(prototype)”语句并根据需要在一周中的每一天替换“Sun”和“2” - 我经常使用 sprintf 来做这件事

ALTER TABLE `professional_scoring_log` DROP PARTITION Sun;


ALTER TABLE `professional_scoring_log` ADD PARTITION (
PARTITION Sun VALUES LESS THAN (2)
);

关于mysql - 使用mysql分区表删除优化(MySQL 5.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com