【问题标题】:What happens when a flush is performed while a script is executing?在执行脚本时执行刷新会发生什么?
【发布时间】:2013-01-03 11:58:38
【问题描述】:

来自manual 它说FLUSH TABLES:

关闭所有打开的表,强制关闭所有正在使用的表,并且 刷新查询缓存。 FLUSH TABLES 还会删除所有查询结果 来自查询缓存,如 RESET QUERY CACHE 语句。

从上面我不太明白,在运行包含多个查询的 PHP 脚本时执行 FLUSH TABLES 的含义是什么。假设我在表 A 上有一个 UPDATE 查询,然后是表 B 上的 INSERT 查询,然后是事务页面上的 mail()header(),当执行 FLUSH TABLES 时,INSERT 查询是否会被删除? MySQL 正在运行 UPDATE 查询?

【问题讨论】:

  • 几乎没有使用刷新表的实际理由。但我认为它不应该干扰现有事务,并且只在获得锁定时运行。不过测试起来很容易。
  • @datasage,在备份之前是否需要刷新所有带读锁的表?

标签: php mysql flush


【解决方案1】:

MySQL 将等到之前的查询结束,然后它会执行 FLUSH TABLES。在 FLUSH TABLES 之后进行的查询将在 FLUSH TABLES 之后入队并执行。

如果没有异常发生,不会丢失任何查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2020-07-29
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多