是时候导入 sql 转储了

And*_*rew 2 mysql

我目前正在上传维基百科的转储文件之一。它有 1GB 压缩和约 7GB 未压缩。它已经导入了 6 个小时。MySQL 中导入表的大小目前为 1.5GB(数据+索引)。会一直导入直到表的大小达到7GB吗?

注意:数据库的数据目录在外部硬盘上。考虑到这只是一个发展,所以我并不关心真实的表现。

But*_*kus 7

我假设您是通过 ssh 连接的,或者您正坐在电脑前。打开一个单独的窗口并在 mysql 中运行此查询:

SHOW PROCESSLIST;
Run Code Online (Sandbox Code Playgroud)

前几天我刚刚导入了一个 3GB(未压缩)的 db,我相信这个查询向我展示了导入过程的确切位置。

就我而言,表格是按字母顺序导入的,所以我确切地知道它的进度。

另外,请查看此stackoverflow question的答案以了解终止进程与终止查询。

  • 是的,你可以这样做。我相信 SHOW PROCESSLIST 中显示的 id 对应于 PID。您也可以勾选“顶部”进行确认。如果你知道进程id(pid),例如407,你可以在命令行中使用这个简单的命令(不要杀错):kill 407 (2认同)

小智 6

不能说大小,但您可以尝试检查转储中的最后一个条目或条目数量,然后检查数据库中当前的最后一个条目。这可能会帮助您确定导入完成所需的时间。

导入数据的大小甚至可能比未压缩的 7GB 还要大,因为索引通常不包含在转储中,而是在插入时构建的。

作为旁注:这也是一种加速导入本身的方法:在导入过程中删除索引并在稍后重建它,这帮助我多次加快速度。

  • 首先你需要打开一个新的连接,你现在也可以使用 MySql Workbench (http://www.mysql.com/products/workbench/):`SHOW INDEXES FROM tbl_name;` 给你一个表上所有索引的列表`DROP INDEX index_name ON tbl_name` 删除一个索引 (2认同)
  • 关于文件查看器:我假设您使用的是 Windows?看看这里 http://superuser.com/questions/34749/is-there-a-text-editor-for-very-big-files 或这里 http://stackoverflow.com/questions/159521/text-editor -to-open-big-giant-huge-large-text-files,否则 (Linux) `less` 会很有魅力。 (2认同)