mysql - MySQL失去连接->操作完成?
问题描述
我有一个 >19M 行的表,我想创建一个子表(我将表分成几个较小的表)。所以我正在做一个CREATE TABLE new_table (SELECT ... FROM big_table)
. 我在 MySQL Workbench 中运行查询。
该查询需要很长时间才能执行,因此最终我收到“与 MySQL 服务器的连接丢失”消息。但是,几分钟后,新表就在那里,它似乎包含了所有应该被复制的数据(我这样做GROUP BY
不能只检查两个表中的行数是否相等)。
我的问题是:即使我失去与数据库的连接,我是否保证查询已完成?或者 MySQL 是否可以在中途中断查询并仍然留下不完整数据的表?
解决方案
即使我失去与数据库的连接,我是否保证查询已完成?
不会。除了连接超时之外,还有其他几个原因会导致连接丢失错误。服务器可能由于磁盘空间用完或硬件故障而崩溃。管理员可能已终止您的会话。
“保证”在数据库管理领域是一个强有力的词。因为别人的数据。您不应该假设任何查询都正确运行到完成,除非它优雅地结束。
如果您之所以询问是因为隔夜查询失败并且您不想重复它,您可以检查表并使用诸如COUNT(*)
说服自己已完成之类的东西。但请不要在生产中依赖这种黑客行为来处理他人的数据。
推荐阅读
- ios - 处理具有底部约束的键盘
- r - Lubridate:将分钟输出扩展为长度为 3
- vba - 为什么控制台中的操作被暂停,直到过程完成
- google-app-maker - 使用 AppMaker 的任务分配系统
- sql - 在获取最新日期并执行内部连接后插入另一个表
- angular5 - Angular-Type '{}' 不可分配给类型 'IQuest[]'
- angular - 不明白为什么我的 withLatestFrom 运算符被触发
- c - C - 三角程序在调用 main 时不打印任何输出
- image - 仅使用 200 张图像训练 TensorFlow
- c++ - 将数据集从 R 传递到 C++(使用 .Call)