【问题标题】:How to see progress of .csv upload in MySQL如何在 MySQL 中查看 .csv 上传的进度
【发布时间】:2011-04-21 19:02:46
【问题描述】:

我有一个非常大的 .csv 文件,我正在使用 LOAD DATA INFILE 命令将它加载到 mysql 中。因为需要很长时间,所以我想看看上传的进度。

到目前为止,我已经尝试了两种方法- 首先,我只是简单地执行了一个 SELECT COUNT(*) 命令来查看在上传过程中插入了多少行,但这总是返回 0。
其次,我尝试了 SHOW PROCESSLIST 并查看了查询运行了多长时间。有时状态会显示“释放数据”或类似的意思。

有谁知道跟踪 LOAD DATA INFILE 命令进度的好方法吗?另外,有人知道如何跟踪插入率吗?

谢谢

【问题讨论】:

    标签: mysql csv load-data-infile


    【解决方案1】:

    在 Linux 上,您可以打印有关文件描述符 (ls -l /proc//fd) 和文件位置读取器 (cat /proc//fdinfo) 的信息。所以:

    1. 查找mysqld pid(在本例中:1234):

      $ ps -ef | grep mysqld

      mysql 1234 1 0 feb12 ? 00:00:55 /usr/sbin/mysqld

    2. 查找已加载文件的文件描述符编号(在此示例中:45):

      $ sudo ls -l /proc/1234/fd

      lr-x------ 1 root root 64 Feb 13 10:56 45 -> /var/lib/mysql/db/Loaded_file.txt

    3. 打印有关该文件描述符的信息并检查已读取的字节数(在此示例中:494927872):

      $ cat /proc/1234/fdinfo/45

      pos: 494927872

      flags: 0100000

    您可以将此进度指示器(以字节为单位)与正在加载的实际文件大小进行比较。

    除了步骤 1 和 2,您还可以使用 'lsof' 命令:

    $ lsof /var/lib/mysql/db/Loaded_file.txt | grep mysql
    
    COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
    
    mysqld    1234 youknowwho    45r   REG  252,0   190312 5505353 /var/lib/mysql/db/Loaded_file.txt
    

    【讨论】:

    • 这在许多其他“大文件读取”场景中非常棒且有用!
    • 这与查询运行的时间相结合,为我提供了一个非常准确的 ETA。非常有用,谢谢。
    • 这对我来说不太适用。我不得不使用 lsof 来获取相关进程和 fd。读取文件的是我的 mysql 客户端,而不是 mysqld。但这是一个非常有用的提示!
    • 感谢您的提示,我已经使用这种方法编辑了帖子。
    【解决方案2】:

    http://www.stephenchu.com/2008/12/speed-up-your-mysql-data-load.html,如果您的表是 Innodb 类型,您可以使用 SHOW INNODB STATUS,而您没有碰巧提到。

    我链接到的页面也有一些很好的调优建议,以提高您以这种方式加载数据的整体性能。

    【讨论】:

    • SHOW INNODB STATUS 现在应该变为 SHOW ENGINE INNODB STATUS \G;,并带有额外的尾随 \G,以便 grep 有效
    【解决方案3】:

    这里有几种方法...

    1. set session transaction isolation level read uncommitted;然后 count(*) 将起作用
    2. select rows_read as 'Read', round((rows_read/{linecount})*100, 2) as 'Complete', round(time/60, 2) as 'Elapsed', round(time * 100 / round((rows_read/<line count>)*100, 2) / 60, 2) as 'ETA' from INFORMATION_SCHEMA.PROCESSLIST where id = <id>;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多