为什么MySQL服务器不会将表写入文件?

问题描述:

最近,我写了一个python代码来插入HTML文本到表中。在我的代码编写大约20万个html页面后,我可以使用select来检索所有这些数据。但是,我发现MySQL服务器不会将任何数据写入文件。我检查内存使用情况,发现mysqld.exe程序消耗的内存超过1.5GB。我搜索整个磁盘的表名,但我只找到了一个与我的表名相关的9KB文件。顺便说一下,我也检查了mysql.ini文件。路径配置是正确的。然后,我使用mysqldump来备份该表。这个命令给了我超过7GB的sql文件。我再次检查并发现我的datadir文件夹中有20GB文件ibdata。这个文件是什么意思?为什么没有与我的表相关的文件? MySQL只是将数据存储在内存中吗?为什么MySQL服务器不会将表写入文件?

+0

你使用了什么样的桌子? Mysql支持临时表和仅在内存中的表类型,以及其他数据库中的链接表(联合表类型)。通常MySQL会在系统出现故障时尽快将数据提交到磁盘。如果200,000行之后没有任何内容在磁盘上,关闭你的机器将丢失数据。 – 2011-06-02 18:27:52

也许你在使用InnoDB,但没有启用innodb_file_per_table,所以一切都被写入一个文件。

运行SHOW TABLE STATUS并检查存储引擎值。它可能会使用MEMORY,虽然如果是这样并且您不知道(因为您必须明确设置),我会感到惊讶。