优化 MySQL LOAD DATA INFILE 以实现快速数据导入
使用 LOAD DATA INFILE 将大量数据集导入 MySQL 可能非常耗时,尤其是在导入后创建索引。本文探讨了各种技术来加速该过程并解决终止查询在数据库中继续执行的问题。
加速 LOAD DATA INFILE
对于 InnoDB 表,请考虑以下优化技巧:
-
按主键对 CSV 文件进行排序order: InnoDB 使用聚集主键,因此对文件进行排序将显着加快加载过程。
-
加载前截断表:删除现有数据以最大程度地减少读取和读取时间
-
禁用自动提交: 设置 autocommit=0 延迟事务提交,直到整个导入,减少提交次数并提高性能。
-
禁用检查:使用 set unique_checks=0 和 setforeign_key_checks=0 暂时禁用唯一键和外键检查。
-
禁用二进制日志记录:通过 set sql_log_bin=0 暂停二进制日志记录以消除相关开销包含写入日志。
-
将 CSV 文件拆分为多个块:将 CSV 文件分成更小的片段以加快加载速度。
终止查询
要终止慢速查询而不重新启动 MySQL,请尝试以下:
-
KILL 命令: 发出 KILL {query_id} 命令以终止特定查询。
-
关闭客户端连接: 强制关闭执行查询的终端窗口也将停止正在运行的查询。但是,这可能会导致数据损坏或不一致。
通过应用这些优化,您可以显着提高 LOAD DATA INFILE 的性能并简化数据导入过程。
以上是如何优化 MySQL LOAD DATA INFILE 以加快数据导入速度?的详细内容。更多信息请关注PHP中文网其他相关文章!