0

我已经运行 mysql -u root -p gf < ~/gf_backup.sql 来恢复我的数据库。但是,当我看到进程列表时,我看到一个查询已经闲置了很长时间。我不知道为什么。

mysql> show processlist;
    +-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
    | Id  | User | Host      | db          | Command | Time  | State     | Info                                                                                                 |
    +-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
    | 662 | root | localhost | gf | Query   | 18925 | query end | INSERT INTO `gf_1` VALUES (1767654,'90026','Lddd',3343,34349),(1 |
    | 672 | root | localhost | gf | Query   |     0 | NULL      | show processlist                                                                                     |
    +-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
4

2 回答 2

1

请使用 df -h 命令(如果在 Linux/Unix 下)检查可用空间,如果空间不足,请不要杀死或重新启动 MySQL,直到它在释放一些空间时赶上更改。

您可能还想检查 my.cnf 中的 max_allowed_pa​​cket 设置并将其设置为 256M,请参阅http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_pa​​cket

于 2012-06-04T05:23:59.773 回答
0

可能您的转储非常大并且包含许多规范化数据(记录分成一堆表,带有一堆外键约束、索引等)。

如果是这样,您可以尝试从 SQL 文件中删除所有约束和索引定义,然后导入数据并重新创建以前删除的指令。这是一个众所周知的加快导入速度的技巧,因为INSERT没有验证任何约束的命令要快得多,并且之后创建索引等可以在单个事务中完成。

另见:http: //support.tigertech.net/mysql-large-inserts

当然,您应该先终止查询。并删除它已经创建的所有片段。

于 2012-06-04T04:14:44.230 回答