首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 千萬級數據插入優化:批量 INSERT 與 LOAD DATA 實測對比

     編輯:MySQL 綜合教學

場景

需導入 2000 萬條記錄,單條 INSERT 仅百條/秒,Hadoop 集群跑也同樣慢。

優化方案一:批量 INSERT(多值語句)

INSERT INTO tbl (c1, c2) VALUES
(v1, v2), (v1, v2), (v1, v2), ...;  -- 每條 500-1000 行,提交一次

效果:速度提升數倍,但仍受限於 SQL 解析、事務提交開銷,約 1-2 萬條/秒。

優化方案二:LOAD DATA 文本導入(極致性能)

# 1. 生成標準文本文件(字段 TAB 分隔,行換行符分隔,NULL 用 \N)
# 2. 客戶端執行
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

實測數據(i5-2400 / 8GB RAM / 90MB/s 磁盤)

關鍵參數調優

  • bulk_insert_buffer_size(MyISAM) / innodb_buffer_pool_size(InnoDB)適當增大。
  • innodb_flush_log_at_trx_commit = 2 導入期間臨時放寬(恢復後改回 1)。
  • unique_checks=0、foreign_key_checks=0 導入期間關閉約束檢查。

超大文件(11GB+)建議

分片並行導入、或使用 xtrabackup --import 物理導入、或分庫分表架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案預處理導入耗時速度
單條 INSERT無極慢~百條/秒
批量 INSERT應用層拼 SQL較長~1-2 萬/秒
LOAD DATA3 分鐘生成 800MB 文本7 分鐘~4-5 萬/秒