我每天都有一个收集大量虚拟机群集统计信息的表格,我希望每天在以创建日期命名的表中存放旧统计信息,以提高查询性能。
我想到的两种可能方式:
stat_cpu
重命名为stat_cpu_(yesterday date)
stat_cpu
专业人士:高效
缺点:在此过程中插入数据,需要重写应用程序以防止插入失败。
stat_cpu_(yesterday date)
stat_cpu_(yesterday date)
专业人士:应用程序不需要更改
缺点:巨大的数据传输哪种方式更好?或者有更好的方法来做到这一点吗?
答案 0 :(得分:0)
你应该结合我的方法
CREATE TABLE `stat_cpu_last_day` LIKE `stat_cpu`;
INSERT INTO `stat_cpu_last_day` (
SELECT * FROM `stat_cpu`
);
RENAME TABLE
`stat_cpu_last_day` TO `ghost_table`,
`stat_cpu` TO `stat_cpu_last_day`,
`ghost_table` TO `stat_cpu`
;
如果您这样做,在此过程中插入的数据不会丢失。
因为只有放在这里它可以发生它的RENAME
查询它的快速并锁定它使用的表。
你不需要重写你的应用程序。
关于INSERT查询中的大量数据传输...很多索引? (你可以在插入之前删除它们)无论如何都会很快。但即便如此。
应安排此操作