Mysql 加载数据填充是否先将所有数据加载到内存?

Mysql 加载数据填充是否先将所有数据加载到内存?,mysql,Mysql,我有一个1000万行的数据文件,有两个字段,id和名称。文件的总大小为650 MB 将此数据加载到数据库表需要多长时间?这是一个多对多关系的交集表 这样做似乎需要很长时间。在加载时,我尝试执行select语句。然而,它是空的 MariaDB [wordDS]> select count(*) from Category_Term; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (1

我有一个1000万行的数据文件,有两个字段,id和名称。文件的总大小为650 MB

将此数据加载到数据库表需要多长时间?这是一个多对多关系的交集表

这样做似乎需要很长时间。在加载时,我尝试执行select语句。然而,它是空的

MariaDB [wordDS]> select count(*) from Category_Term;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (12.02 sec)

Load Data Infile已经运行了很长一段时间,为什么还没有将任何数据加载到表中?我怀疑所有的数据行都会先读入内存,然后在加载结束时写入表中。否则,我可以使用“select*”语句来检查加载状态。

在支持它的表(如InnoDB)上,这通常是在事务上下文中加载的,因此在它完成之前,您不会看到任何内容。然后,所有数据突然可用

如果您需要逐个加载,您可能需要将一个电子表格转换为多个部分,并按顺序加载这些部分


我喜欢把大文件分解成更小的部分,这样你就有了进步的感觉。看到“文件23/100已完成”比看到“文件0/1已完成”要好得多。

您是否估计加载1000万行需要多长时间?这完全取决于您的MySQL数据库调整、硬件、服务器负载以及表上的其他查询。。。查看
SHOW PROCESSLIST
,大致了解一下发生了什么。如果你经历了一些超级坏运气,它可能是30秒到永远。一整夜整日,但仍然没有结束。这正常吗?看看你的进程列表和CPU负载。它到底在做什么?它可能卡住了。我觉得声音很闷。也许你有一个死锁状态。值得在网上询问如何诊断。如果您只是在做
加载数据填充
,那么从理论上讲,您的做法是正确的。