mysql - 为什么使用 phpmyadmin 导入或 bigdump 将 sql 文件上传到 mysql 数据库不使用 CPU 时间但速度太慢了

标签 mysql import

正如标题所说,我没有找到任何原因,我自己也想不通为什么将 sql 文件导入本地以太网上的 mysql 数据库如此慢,即使对于只有 4MB 的文件,但 CPU 使用率约为 1 % 和内存更少..

我通过bigdump上传一个4MB的sql文件然后发出一个得到了上面的结果

  top

远程主机上的命令:当导入工作时,进程使用了​​ 1% 的 CPU。 那么计算机一直在做什么?

编辑:甚至通过简单地使用本地文件导入和类似命令来完全避免网络

  mysql -u root -ppassword database_name < database.sql

需要很长时间,但内存和 cpu 的使用率非常低..

谢谢

最佳答案

您没有提供足够的信息来准确回答您的问题。

但是您的 MySQL 服务器极有可能受 I/O 限制。在上传表格时,您很可能会用尽硬盘存储空间。

我怀疑您正在导入的表是 InnoDB 表,并且您在每次插入后都进行了隐式提交。也有可能您正在加载一个包含大量索引的表。

看看这个页面:

http://dev.mysql.com/doc/refman/5.5/en/commit.html

您可以尝试使用您的 SQL 数据编辑该文件,以包装大约 100 个 INSERT 语句的 block ,如下所示。

 START TRANSACTION;
 INSERT ...
   ...
 INSERT ...
 COMMIT;
 START TRANSACTION;
 INSERT ...
   ...
 INSERT ...
 COMMIT;
 START TRANSACTION;
 INSERT ...
   ...
 INSERT ...
 COMMIT;

它将减少事务数量并减少服务器 I/O。

你的表可能还有一堆键;您可以禁用更新每一行的这些键,并在上传完成后执行。这可以节省大量时间。

这是一篇文章。

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

关于mysql - 为什么使用 phpmyadmin 导入或 bigdump 将 sql 文件上传到 mysql 数据库不使用 CPU 时间但速度太慢了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16265807/

相关文章:

php - 使用 while 循环时未显示数据库的第一个结果

用于复制表的 PHP 查询

mysql - 在 MySQL 数据库导出前添加表名

mysql - 对 3 个表进行求和、分组连接和连接。

mysql - 将 MYD 文件导入 MySQL 数据库

java - 将现有项目导入 eclipse 给我带来了很多错误

python - 使用单独的 python 函数导入依赖项

android - 使用 ODBC 和 ASP 将我的 Android 应用程序连接到 MySQL

python - Python import 是否将所有代码复制到文件中

python - 使用 Jupyter Notebook 安装 wordcloud