优化 MySQL LOAD DATA INFILE 性能
使用 LOAD DATA INFILE 命令将大量数据导入 MySQL 表时,性能可能会受到影响重大关切。出现的一个挑战是在不使用密钥导入(这可能导致数据加载速度更快但密钥创建速度较慢)和使用密钥导入(这会减慢导入过程)之间进行权衡。以下是一些加速导入的策略:
按主键排序数据:
在加载数据之前,根据主键顺序对 CSV 文件进行排序目标表。这在使用 InnoDB 时特别有用,因为它使用聚集主键,这意味着排序时数据加载速度会更快。
禁用约束:
暂时禁用唯一和外部键约束(设置 unique_checks = 0;设置foreign_key_checks = 0;)以提高导入速度。加载数据后,您可以再次启用这些约束(set unique_checks = 1; setforeign_key_checks = 1;)。
禁用二进制日志记录:
禁用二进制日志记录(set sql_log_bin=0;) 还可以缩短导入时间。启用后,MySQL 将所有写入查询记录到二进制日志中以用于复制目的。禁用它可以释放可用于加载数据的资源。
截断表:
在加载数据之前,截断目标表以删除任何现有行(truncate < ;表>;)。这可确保您导入的数据是表中的唯一数据。
拆分 CSV 文件:
如果您的 CSV 文件非常大,请考虑将其拆分为更小的块。这允许 MySQL 以较小的批量加载数据,从而减少每次加载操作所需的时间。
终止慢查询:
终止慢查询而不重新启动 MySQL ,使用 KILL QUERY 命令。此命令可以从 MySQL 命令行或使用 phpMyAdmin 等工具执行。
其他提示:
以上是如何针对大数据导入优化 MySQL LOAD DATA INFILE 性能?的详细内容。更多信息请关注PHP中文网其他相关文章!