如何使用带键表的 Load Data Infile 优化 MySQL 数据导入?

Susan Sarandon
发布: 2024-11-08 08:49:02
原创
371 人浏览过

How to Optimize MySQL Data Import using Load Data Infile for Tables with Keys?

使用 Load Data Infile 优化 MySQL 数据导入

将大型数据集导入 MySQL 表可能是一项耗时的任务。使用“加载数据到文件中...”命令时,平衡速度和数据完整性可能具有挑战性。这个问题探讨了提高此类导入性能的方法,特别是对于带有键的表。

提高导入速度

问题中提到的主要问题是慢键导入数据后创建,无需密钥。要解决此问题:

  • 对 CSV 文件进行排序: 按照表主键的顺序排列 CSV 文件中的数据。这有助于 Innodb 利用其集群主键结构来加快加载速度。
  • 禁用约束: 暂时禁用唯一键和外键检查以减少加载期间的开销。使用命令 set unique_checks = 0;并设置foreign_key_checks = 0;。
  • 禁用二进制日志记录:关闭二进制日志记录(设置sql_log_bin = 0;)以绕过日志记录以提高性能。
  • 拆分大文件: 将大 CSV 文件分成较小的块并单独加载。这可以减少内存消耗并加快进程。

加速密钥创建

加载数据后,重建密钥可能是一个漫长的操作。这里有一些建议:

  • 批量插入:在 LOAD DATA INFILE 语句中使用 BULK INSERT 子句一次性导入带有键的数据。
  • 自适应哈希索引:启用自适应哈希索引(innodb_adaptive_hash_index=ON) 以加快常用查询的索引创建速度。
  • 并行索引: 如果可能,请使用并行索引 (innodb_parallel_alter=ON) 为索引创建创建多个线程(可能)减少所用时间。

终止慢速查询

要终止终止后继续运行的慢速查询,请考虑:

  • 重试连接:断开并重新连接到 MySQL 服务器以优雅地结束查询。
  • 使用查询 ID: 识别使用 SHOW PROCESSLIST 查看查询的 ID,并使用 KILL [QUERY_ID] 终止它。
  • 重新启动 MySQL: 作为最后的手段,重新启动 MySQL 将终止所有正在运行的查询。但是,它可能会导致服务中断。

以上是如何使用带键表的 Load Data Infile 优化 MySQL 数据导入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!