MYSQL 表在删除期间超时

标签 mysql mysql-workbench innodb

我有一个包含数亿行数据的表。我想删除该表,但是我对该表执行的每个操作在运行超过 50,000 秒(大约 16 小时)后都会失去连接,这是在我在数据库中设置的 60,000 秒超时条件下的。我尝试使用 Drop Table 代码创建一个存储过程,认为如果我将信息发送到数据库来执行操作,它将不需要连接来处理它,但它做了同样的事情。难道只是超时了?还是我需要做点别的事情?

最佳答案

而是执行截断表。它在内部创建一个等效但空的表,然后进行交换。即使对于非常大的表,此技术也可能需要一秒钟的时间。

如果您要删除表的大部分,那么通常会更快(有时更快)

CREATE TABLE new LIKE real;
INSERT INTO new
    SELECT ... FROM real
        WHERE ... -- the rows you want to keep

为什么需要删除所有内容?

有关大规模删除的其他技术,包括从大表中删除大块,请参阅 https://mariadb.com/kb/en/mariadb/big-deletes/

关于MYSQL 表在删除期间超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44348979/

相关文章:

MySQL加载数据错误

Java JDBC : MySQL write Out of Memory

mysql - 如何使用触发器来记录 MySQL 中数据库更改的历史记录?

MySQL 工作台数据类型

mysql - 联合查询错误执行

php - MYSQL innodb 全文搜索不显示所有结果

mysql - 通过 MySQL InnoDB 行锁的应用程序互斥

php - UTF-8贯穿始终

mysql - 拒绝用户 '<userid>' @'<my-pc-ip-address>' 对于表 '<table-name>' 的 SELECT 命令

MySQL InnoDB : how to completely flush all remaining transactional changes