当脚本正在执行时执行flush会发生什么?

4
手册中可以得知,FLUSH TABLES的作用是:

关闭所有打开的表,强制关闭所有正在使用的表,并清空查询缓存。FLUSH TABLES也会像RESET QUERY CACHE语句一样从查询缓存中移除所有查询结果。

但我不太明白,在运行包含多个查询的PHP脚本时执行FLUSH TABLES会产生什么影响。例如在TABLE A上进行一个UPDATE查询,接着是一个TABLE B上的INSERT查询,最后在一个事务页面上执行mail()header(),如果当MySQL正在运行UPDATE查询时执行FLUSH TABLES,会删除INSERT查询吗?


3
使用flush tables的实际理由很少。但我认为它不应该干扰现有的事务,只有在获取锁之后才运行。不过这很容易测试。 - datasage
在备份之前,@datasage 是否有必要使用读锁刷新所有表? - Question Overflow
1个回答

0

MySQL会等待之前的查询结束,然后执行FLUSH TABLES。在FLUSH TABLES之后进行的查询将被排队并在FLUSH TABLES之后执行。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接