【问题标题】:How to refresh a MySQL table without website interruption?如何在不中断网站的情况下刷新 MySQL 表?
【发布时间】:2009-12-05 18:13:04
【问题描述】:

每天我需要使用 ftp 和 mysqlimport 使用从网络下载的新文件更新 MySQL 表。但是,我希望我的网站在 mysqlimport 操作期间保持平稳运行,这需要相当长的时间(这是一张大桌子)。 什么是确保用户不等待导入完成的好方法? 我正在考虑导入一个临时表,然后重命名它。这是个好计划吗?

【问题讨论】:

    标签: mysql high-availability mysqlimport


    【解决方案1】:

    一个鲜为人知的事实是,您可以在 mysql 中连接多个 rename 语句,它会自动执行所有名称更改。

    create table newtable like oldtable;
    insert into newtable .......
    rename table oldtable to deleteme, newtable to oldtable;
    drop table deleteme;
    

    重命名表会阻塞读取器(实际上它会阻塞任何名称解析)但应该是一个非常快的操作。

    【讨论】:

      【解决方案2】:

      如果是增量更新,您可以简单地通过 cron / 调度来限制新数据的插入。

      每分钟加载 XYZ 记录,查看之前的更新是否完成,制作锁文件,延迟插入,冲洗并重复。

      如果您想真正了解它,请让更新脚本在运行时检查服务器负载并相应地调整导入数量。

      这将导致新数据成批出现,但可以让您在网站更新时保持网站运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-22
        • 2021-02-05
        • 2012-09-23
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多