提高 mysql LOAD DATA / mysqlimport 的性能?

2024-01-13

我正在批处理CSV15GB(30mio 行)成mysql-8数据库。

问题:任务大约需要 20 分钟,吞吐量约为 15-20 MB/s。而硬盘能够以 150 MB/s 的速度传输文件。

我有一个 20GB 的 RAM 磁盘,用于保存我的 csv。导入如下:

mysqlimport --user="root" --password="pass" --local --use-threads=8 mytable /tmp/mydata.csv

这使用LOAD DATA在引擎盖下。 我的目标表没有任何索引,但有大约 100 列(我无法更改它)。

奇怪的是:我尝试调整几个配置参数,如下所示/etc/mysql/my.cnf,但他们没有给出任何显着的改进:

log_bin=OFF
skip-log-bin
innodb_buffer_pool_size=20G
tmp_table_size=20G
max_heap_table_size=20G
innodb_log_buffer_size=4M
innodb_flush_log_at_trx_commit=2
innodb_doublewrite=0
innodb_autoinc_lock_mode=2

问题: 是否LOAD DATA / mysqlimport尊重这些配置更改吗?还是绕过了?或者我是否使用了正确的配置文件?

至少对变量的选择表明它们已被 mysql 服务器正确加载。例如show variables like 'innodb_doublewrite' shows OFF

无论如何,如何进一步提高导入速度?或者我的数据库是瓶颈并且没有办法克服 15-20 MB/s 的阈值?

更新: 有趣的是,如果我将 csv 从硬盘导入到 ramdisk,性能几乎相同(只是好一点,但永远不会超过 25 MB/s)。我还测试了相同数量的行,但仅测试了几 (5) 列。我的速度达到了大约 80 MB/s。那么显然列数是瓶颈?但为什么更多的色谱柱会减慢这个过程呢?


MySQL/MariaDB 引擎在进行批量插入时几乎没有并行化。每个CPU只能使用一个核心LOAD DATA陈述。您可能会在加载期间监视 CPU 利用率,以查看一个核心是否得到充分利用,并且它只能提供一定量的输出数据 - 从而导致磁盘吞吐量未得到充分利用。

MySQL 的最新版本具有新的并行加载功能:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-parallel-table.html。它看起来很有希望,但可能还没有收到太多反馈。我不确定这对你的情况有帮助。

我在互联网上看到了各种清单,建议在以下配置参数中使用更高的值:log_buffer_size, log_file_size, write_io_threads, bulk_insert_buffer_size。但当我进行对比测试时,好处并不是很明显(可能比单纯的快 10-20%)innodb_buffer_pool_size足够大)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高 mysql LOAD DATA / mysqlimport 的性能? 的相关文章

随机推荐

  • 保持 git clean 历史记录的最佳实践是什么?

    在阅读有关 git 工作流程的文章时 我想知道历史重写的适当性 我的工作流程以及我想象的许多其他人的工作流程是这样的 获取 Github 存储库 我们称其为rep1 制作一个叉子 这将是rep2 git 将其克隆到本地以进行使用 即rep3
  • “ascii”编解码器无法对位置 * 或不在范围内的字符进行编码 (128)

    stackoverflow 上有一些线程 但我找不到整个问题的有效解决方案 我从 urllib 读取函数收集了大量文本数据并将其存储在 pickle 文件中 现在我想将这些数据写入文件 写作时我遇到类似的错误 ascii codec can
  • 如何在使用 Eigen Library C++ 时删除特定行或列

    我正在为我的项目使用 Eigen 库 我正在搜索如何从特征中的给定矩阵中删除特定行或列 我没有成功 MatrixXd A X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4 A1 A2 A3 A4 MatrixXd At
  • SQL Server中两个日期之间的月差

    请参考以下示例 并请告诉我您的想法 declare EmployeeStartDate datetime 01 Sep 2013 declare EmployeeEndDate datetime 15 Nov 2013 select Dat
  • ARCore 在按钮单击时保存相机图像 (Unity C#)

    我有一个类似的问题 例如以下三个问题 将 Unity ARCore 中的 AcquireCameraImageBytes 作为图像保存到存储 https stackoverflow com questions 49579334 save a
  • 我可以从 Google 表格脚本生成文件吗?

    我正在使用 Google Sheets 为我正在做的事情制作一堆数值数据的原型 有没有办法将子集导出到文本文件 实际上 我的目标是导出一个可以直接包含在另一个项目的构建中的文件 那么有没有办法生成文本文件供下载呢 如果您有 Google A
  • 文件读取器内存泄漏

    我正在使用 FileReader 将图像文件上传到客户端 用于数据获取和缩略图显示 我注意到的是 在页面进程上 在任务管理器中 内存只会越来越高 当进程停止时 内存保持在高位并且永远不会下降 你能告诉我我在这里做错了什么吗 如需查看 请上传
  • 找不到模块:无法解析“@date-io/date-fns”

    我在用着反应材料用户界面 https material ui com我收到此错误 找不到模块 无法解析 date io date fns 以下是我的 package json 文件中的依赖项 dependencies date io dat
  • 当需要日志记录时,您会考虑哪种设计模式?

    我正在开发的应用程序需要将操作 执行该操作的用户以及操作时间记录到数据库中 哪种设计模式最流行 最适合日志记录 我在想命令模式需要当前用户和操作 执行操作并写入日志 你怎么认为 我可以考虑其他替代方案吗 谢谢 您可以使用AOP http e
  • 如何删除Jenkins下的View而不影响现有作业

    我想删除Jenkins下的Views而不影响视图下的Jobs 我之所以问这个问题 是因为即使以管理员身份删除它后 我也无法输入相同的视图名称 我检查了 Jenkins 文件夹下的配置文件并尝试编辑视图名称 但这不起作用 我需要确认以下脚本是
  • 图钉调整绑定缩放级别大小

    我将 WinRT 与 bing 地图结合使用 并尝试在缩放地图时设置 以编程方式 图钉的 RenderTransform 值 我试过这个Solution http social msdn microsoft com Forums en US
  • Django - 如何在不修改的情况下扩展第 3 方模型

    我想向数据库表添加一列 但我不想修改第 3 方模块 以防我将来需要 决定升级模块 有没有办法可以在我的代码中添加此字段 以便在新版本中我不必手动添加该字段 您可以使用 ModelName add to class 或 contribute
  • pip3 ImportError:无法导入名称“IncompleteRead”

    通过安装模块时遇到问题pip3 尝试了 2014 年 12 月以来投票最高的帖子中的一些建议 但仍然得到以下结果 sudo pip3 install send2trash Traceback most recent call last Fi
  • 使用 GAE 限制对静态文件的访问

    我有一个静态文件 我不想公开该文件 有没有办法限制 app yaml 的访问 使其只能由自己的域加载 基于 web2py 的解决方案也很受欢迎 因为我在 GAE 之上使用它 Thanks 您可以使用 登录 必需 来限制对其的访问 以要求使用
  • RuntimeError: 维度超出范围(预期在 [-1, 0] 范围内,但得到 1)

    我使用 Pytorch Unet 模型 将图像作为输入 同时将标签作为输入图像掩码 并在其上训练数据集 我从其他地方获得的 Unet 模型 我使用交叉熵损失作为损失函数 但我得到了这个维度超出范围的错误 RuntimeError Trace
  • 为什么无法从 Excel 互操作中设置强制转换对象?

    尝试获取对工作表的引用 使用 Excel 互操作 Excel Application xl new Excel ApplicationClass Excel Workbooks xlWorkBooks xl Workbooks Excel
  • Cytoscape.js - 将核心背景设置为深色?

    我正在尝试将边缘渲染为白色 因此希望在 cytoscape js 视口中使用黑色背景 我尝试修改 div 上的 cssid cy 但这似乎被覆盖了 在文档中 我只能找到在导出到图像时设置背景颜色的功能 例如cy jpg 但这不是我想要的 我
  • (未使用的)GLSL 制服/输入/输出是否有助于调节压力?

    我不知道制服在记忆中是如何表示的 制服似乎会占用宝贵的寄存器空间 但它们最终会传入 通过 传出到全局内存中 对吧 制服未使用后情况会发生变化吗 编译器可以优化它们吗 在这种情况下 我作为绑定位置变得无效 1 所以我假设是的 制服以 GLSL
  • gnu ld 链接整个目标文件还是仅链接所需的函数?

    我们有一个库和一个可执行文件 那就是静态地链接到库 我们希望最小化最终可执行文件的程序空间 根据 avr libc 的文档 链接器链接该函数所在的整个对象模块 http www nongnu org avr libc user manual
  • 提高 mysql LOAD DATA / mysqlimport 的性能?

    我正在批处理CSV15GB 30mio 行 成mysql 8数据库 问题 任务大约需要 20 分钟 吞吐量约为 15 20 MB s 而硬盘能够以 150 MB s 的速度传输文件 我有一个 20GB 的 RAM 磁盘 用于保存我的 csv