【发布时间】:2021-02-06 15:37:48
【问题描述】:
我有一个 >19M 行的表,我想创建一个子表(我将表分成几个较小的表)。所以我正在做一个CREATE TABLE new_table (SELECT ... FROM big_table)。我在 MySQL Workbench 中运行查询。
查询需要很长时间才能执行,所以最终我收到“与 MySQL 服务器的连接丢失”消息。然而,几分钟后新表就在那里,它似乎包含了所有应该被复制的数据(我正在做一个GROUP BY,所以不能只检查两个表中的行相等)。
我的问题是:即使我失去与数据库的连接,我是否可以保证查询已完成?或者 MySQL 是否会在中途中断查询并仍然留下不完整数据的表?
【问题讨论】:
-
我不知道你的问题的答案,但是stackoverflow.com/questions/15712512/…你可能想使用keepalive来解决这个问题
-
是的,我知道我可以增加超时限制。但我感兴趣的主要问题是即使连接丢失,查询是否会完成。或者查询本身是否会超时或静默失败?
-
超时!= keepalive。但是,是的,我有兴趣看到你的问题的答案。我怀疑的答案是“是的,因为 MySQL 与 DDL 不是事务性的,因此即使客户端不再连接以接收响应,CREATE TABLE 也无法回滚”。但我个人不会指望它。
标签: mysql database-connection create-table