mysql - 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 来部署和监控我的网站,它在监控页面上显示以下屏幕:
当我重新启动 MariaDB 服务时,RAM-display-line 为 15%,但是每当我开始新的导入(因此是新的 LOAD DATA INFILE)时,使用的 RAM 量就会增加(这并不奇怪),并熬夜。RAM 行的高度差异是由于 CSV 文件大小的差异造成的。看起来它会加载数据,并且不会清空之后用于它的内存。
有想法该怎么解决这个吗?
附言。我不擅长 infra/devops,所以如果你们需要更多信息,请告诉我。
解决方案
做SHOW TABLE STATUS LIKE 'the_file_name';
然后添加 Data_length + Index_length。这与消耗但未释放的空间量有关吗?
的价值是innodb_file_per_table
多少?
推荐阅读
- php - 如何将解码后的内容发送到 php 服务器?
- electron - Windows可执行应用程序上的图标图形不佳
- xml - 如何删除具有相同内容的列?
- ionic-framework - Pusher Private 频道订阅无法使用 Ionic 4 连接到 IOS 设备上的端点
- java - JavaFx 库不适用于 ubuntu 的 vscode
- angular - 错误类型错误:无法构造“FormData”:参数 1 不是“HTMLFormElement”类型
- javascript - React 无状态功能组件 - Laravel
- reactjs - React 谷歌位置不适用于 Hooks
- python - 工厂方法与 Python 中的注入框架 - 什么更干净?
- c# - 如何在 C# 中的 EDS URI 上放置/发布视频 mp4 文件