gpt4 book ai didi

mysql - 每天拆分 table 的最佳方式

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

我有一个每天都会收集大量虚拟机集群统计信息的表,我想将旧的统计信息存储在每天以创建日期命名的表中,以提高查询性能。

我认为的两种可能的方式:

    • 每天 00:00 将表 stat_cpu 重命名为 stat_cpu_(yesterday date)
    • 创建stat_cpu

优点:高效

缺点:此过程中存在数据插入,需要重写应用程序以防止插入失败。

    • 每天 00:00 创建stat_cpu_(昨天日期)
    • 将昨天的数据移至stat_cpu_(昨天日期)
  • 优点:应用程序不需要更改

    缺点:大量数据传输

    哪种方式更好?或者有更好的方法来做到这一点吗?

    最佳答案

    我猜你应该结合你的方法

    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 查询中的大量数据传输...大量索引? (您可以在插入之前将其删除)无论如何它都会很快。但即使这样也无所谓。

    应该安排此操作

    关于mysql - 每天拆分 table 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707559/

    24 4 0