MySQL LOAD DATA INFILE之后不会清除内存

问题描述

我正在创建一个CSV导入器,将CSV文件加载到MariaDB 10.3.23数据库中。为此,我在带有PHP 7.4环境的Laravel 7中使用以下代码

$query = <<<eof
        LOAD DATA LOCAL INFILE '$this->filePath'
        INTO TABLE `$tableName`
        $characterSet
        FIELDS TERMINATED BY '$this->delimiter'
        ENCLOSED BY '"' LInes TERMINATED BY '\n' IGnorE 1 LInes;
eof;

DB::connection()->getpdo()->exec($query);

我正在使用ploi.io部署和监视我的网站,该网站在监视页面显示以下屏幕:

enter image description here

当我重新启动MariaDB服务时,RAM的显示线为15%,但是每当我开始一个新的导入(并因此一个新的LOAD DATA INFILE)时,使用的RAM量就会增加(不是) RAM行高度的差异是由于CSV文件大小的差异。看起来它正在执行数据加载,并且之后不会清空正在用于它的内存。

关于如何解决此问题的任何想法?

ps。我不太擅长infra / devops,所以如果你们需要更多信息,请告诉我。

解决方法

执行SHOW TABLE STATUS LIKE 'the_file_name';

然后添加数据长度+索引长度。那是关于已消耗但未释放的空间量吗?

innodb_file_per_table的值是什么?