我有一个主数据库,每天最多可存储5,000个新行。
我希望有一个第二个数据库,它只包含最近30天的数据。
因此,我计划设置一个cron作业,定期转储超过30天的行并复制新行。
复制部件的最佳设计是什么?
我想要稳健性和最少的CPU /内存使用量
答案 0 :(得分:2)
最快且最强大的方法是直接在MySQL中执行传输。以下是涉及的步骤:
首先,创建第二个表:
CREATE TABLE IF NOT EXISTS second.last30days LIKE main_table;
接下来,插入30天或更新的记录:
INSERT INTO
second.last30days
SELECT
*
FROM
main_table
WHERE
created >= CURDATE() - INTERVAL 30 DAYS
ORDER BY created;
最后,删除超过30天的记录:
DELETE FROM
second.last30days
WHERE
created < CURDATE() - INTERVAL 30 DAYS
ORDER BY created;
建议不要同时运行INSERT
和DELETE
语句。
答案 1 :(得分:0)
如果数据库都托管在同一台服务器上。只需使用insert ... select
语句。
这样你就可以减少一切。 1查询,完成。