执行 MySQL 查询时查看活动
我正在执行一个需要很长时间才能完成的 MySQL 查询(具体来说,我使用 LOAD DATA INFILE
导入包含大约 2100 万行的 CSV,大约需要 20 分钟)。是否有类似详细模式的东西可以让我在查询执行时观察查询?
我尝试在命令行中使用 -vvv 启动 MySQL,但在这种情况下,除了向我重复查询之外,它似乎没有什么区别。
I'm executing a MySQL query that takes a very long time to finish (specifically, I'm importing a CSV with about 21 million rows using LOAD DATA INFILE
, which takes about 20 minutes). Is there something like a verbose mode that will allow me to watch the query as it executes?
I've tried launching MySQL at the command line with -vvv
, but it doesn't seem to make a difference in this case beyond repeating my query to me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个奇怪的建议
示例:将数据导入名为 mydb.mytable 的表,其中 datadir 为 /var/lib/mysql
步骤 1) 找出 CSV 文件有多大(以字节为单位)
步骤 2) 在 mysql 中,启动 LOAD DATA INFILE 命令在一个 Linux 会话中
步骤 3) 在 Linux 中,cd /var/lib/mysql/mydb
步骤 4) 在 Linux 中,watch -n 0.5 ls -l mytable.*
这将每 0.5 秒显示一次表的大小。
如果表是MyISAM,此方法将让您观察mytable.MYD和mytable.MYI文件的增长
如果表是InnoDB且激活了innodb_file_per_table,您将观察mytable.ibd的增长。
此方法在以下三 (3) 种情况下均无效:
1.如果mydb.mytable是InnoDB
2.如果mydb.mytable存储在/var/lib/mysql/ibdata1
3. 如果innodb_file_per_table被禁用。
Here is a weird suggestion
Example: Importing data into a table called mydb.mytable where datadir is /var/lib/mysql
Step 1) Find out how big the CSV file is in bytes
Step 2) In mysql, start the LOAD DATA INFILE command in one Linux session
Step 3) In Linux, cd /var/lib/mysql/mydb
Step 4) In Linux, watch -n 0.5 ls -l mytable.*
This will display every 0.5 seconds the size of the table.
If the table is MyISAM, this method will let you watch the mytable.MYD and mytable.MYI files grow
If the table is InnoDB with innodb_file_per_table activated, you watch mytable.ibd grow.
This method will not work under all of the following three(3) conditions:
1. If mydb.mytable is InnoDB
2. If mydb.mytable is stored in /var/lib/mysql/ibdata1
3. If innodb_file_per_table is disabled.