批量操作进阶:百万行级数据导入的性能极限

简介: 本文分享百万行数据导入四大进阶技巧:分区表减少锁竞争、禁用索引加速写入、并行LOAD DATA榨干多核性能、金仓kdb_load专用工具再提速。实测100万行最快<1秒,助你从分钟级跃升秒级!

大家好,我是小耶,写功课只是为了我踩过的坑,你们别再踩了!

上周讲了批量插入一万行的优化方法,有朋友问:百万行怎么办?确实,数据量再上一个台阶,之前的多行INSERT和LOAD DATA又会碰到新瓶颈。今天分享四个进阶技巧。

1 名词解释

  • 分区表​:将一张大表按某个键(如日期)拆分成多个物理分区,查询时可只扫描相关分区,导入时数据自动落入对应分区,减少锁竞争。
  • 禁用索引​:导入前关闭索引维护(ALTER TABLE t DISABLE KEYS),导入后重建(ENABLE KEYS),可大幅提升写入速度。
  • 并行导入​:将数据文件拆分成多份,同时运行多个导入进程,利用多核CPU和磁盘并行能力。
  • 批量加载工具​:某些数据库自带专用导入工具(如MySQL的mysqlimport),比通用LOAD DATA更高效。

2 实际运用

2.1 分区表

按日期范围分区示例:

CREATE TABLE orders (
    id INT,
    order_date DATE,
    amount DECIMAL(10,2)
) PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION p2024 VALUES LESS THAN (2025)
);

导入时数据自动落入对应分区,减少锁竞争。

2.2 禁用索引

ALTER TABLE orders DISABLE KEYS;
-- 执行批量导入(如 LOAD DATA)
ALTER TABLE orders ENABLE KEYS;

注意:DISABLE KEYS对非唯一索引有效,唯一索引无法禁用。

2.3 并行导入

将1000万行CSV拆成10个100万行的文件,同时运行10个LOAD DATA会话。示例(shell脚本):

for i in {1..10}; do
    mysql -e "LOAD DATA LOCAL INFILE 'data_$i.csv' INTO TABLE orders" &
done
wait

需确保主键不冲突(如使用不同的id范围)。

2.4 专用工具:金仓 kdb_load

金仓数据库(KingbaseES)提供的 kdb_load 工具,用法类似 LOAD DATA,但针对大数据量做了更深度的优化,支持自动拆分、并行加载。

kdb_load -h localhost -d mydb -U myuser -p 54321 -c data.csv -t mytable

主要参数:

  • -h / -p:数据库主机和端口
  • -d:数据库名
  • -U:用户名
  • -c:源数据文件
  • -t:目标表名

相比通用 LOAD DATAkdb_load 在处理100万行以上的数据时,速度可以再快一截,尤其适合批量数据入仓和跨库迁移场景。

3 实测数据(100万行)

方法 耗时 说明
多行INSERT(1000行/批) 25秒 默认配置
LOAD DATA 8秒 基础
禁用索引 + LOAD DATA 4秒 索引重建额外+2秒
并行LOAD DATA(4线程) 1.2秒 需拆分文件
金仓 kdb_load <1秒 专用工具加速更明显

4 价值总结

  • 分区表、禁用索引、并行导入、专用工具这四招,足以把百万行导入从分钟级压到秒级。
  • 不同方法对应不同量级:十万级可用多行INSERT + LOAD DATA,百万级必须上并行 + 禁用索引,千万级以上建议直接用 kdb_load 类专用工具。
  • 实际落地时,可以先小数据量压测,再按实际耗时决定要不要开并行、要不要上专用工具。

小耶在手,SQL不愁。

还有什么想了解的,欢迎留言!小耶一定知无不言言无不尽……我们下次见~

相关文章
|
4月前
|
SQL 关系型数据库 MySQL
一张5000万行的表,加索引从45秒到0.02秒——索引设计你真的会吗
本文实测5000万订单表:无索引查询45秒,加索引后仅0.02秒(提升2250倍)。详解索引原理、建索引时机、联合索引最左前缀、覆盖索引及隐式转换陷阱,干货不啰嗦!
|
5月前
|
缓存 NoSQL 网络协议
如何为我的网站或应用集成IP归属地查询功能?
本文为网站/应用集成IP归属地查询的落地指南:强调“取对IP”是前提(仅信可信上游、严滤私网),采用“本地+Redis缓存+在线API+硬超时熔断”架构,失败自动降级至省/国家;区分展示型与风控型模型,确保可解释、可审计、可回滚,并严守隐私合规红线。(239字)
392 13
|
4月前
|
关系型数据库 MySQL 测试技术
JOIN、IN、EXISTS谁最快?实测三种写法性能差异与执行计划深度剖析
本文用MySQL 8.0实测拆解`IN`/`EXISTS`/`JOIN`子查询性能:从执行计划、半连接优化、临时表开销等底层原理出发,结合10万+100万数据实测(`EXISTS`最快95ms),给出三条选型铁律——告别盲从“最佳实践”,只选最适配业务与数据的写法!
|
4月前
|
运维 容灾 关系型数据库
数据库容灾配置全攻略:同城容灾vs两地三中心,RPO、RTO一篇讲透
数据库小学妹带你轻松搞懂容灾核心概念!本文用通俗语言解析同城容灾、两地三中心、高可用集群,厘清RPO(数据丢失容忍)与RTO(恢复时效)关键指标,对比方案选型要点,并揭秘同步/异步复制、自动切换、读写分离等实战技术,附避坑指南与演练建议。
|
3月前
|
Kubernetes 安全 开发者
手写 Harness 底层架构: 基于 Deep Agents 深入底层 Sandbox沙盒Infra 基础设施架构
手写 Harness 底层架构: 基于 Deep Agents 深入底层 Sandbox沙盒Infra 基础设施架构
手写 Harness 底层架构: 基于 Deep Agents 深入底层 Sandbox沙盒Infra 基础设施架构
|
2月前
|
人工智能
她不是人,却开始代替人了:AI演员来了
AI女演员Tilly Norwood将主演电影《Misaligned》,她由Particle6公司打造,经2000次迭代生成,无真实身体与人生经历。相比真人演员,AI角色可跨平台、全天候、低成本复用,成为品牌可控的“数字资产”。但其训练依赖真人表演数据,引发SAG-AFTRA对劳工权益的担忧。虚拟人崛起已是不可逆趋势。
|
5月前
|
存储 Rust 编译器
协程的承诺——C++20中最复杂特性的设计故事
C++20引入了协程,这被认为是自C++11以来最复杂的语言特性,甚至比模板元编程和移动语义更难掌握。
262 8
|
3月前
|
存储 人工智能 弹性计算
2026年阿里云优惠券攻略:领取、使用及特惠云服务器解析
本文介绍了2026年阿里云优惠券体系及特惠云服务器的使用指南。优惠券主要包括四类:AI加速季满减礼包(个人最高减150元、企业最高减800元)、百炼先用后返券(最高返200元)、企业迁云补贴(总额5亿元)及学生专享福利。文章详细说明了优惠券的领取流程、使用规则及注意事项,并解析了四款特惠服务器:经济型e实例99元/年、u1实例199元/年(企业专享)、轻量服务器38元/年起(每日限量抢购),以及第九代企业级实例低至6.4折等。
|
3月前
|
Java Windows
JDK 8 安装与环境变量配置教程(jdk-8u121-windows-x64.exe 详细步骤)
本教程详解JDK 8u121 Windows 64位安装与配置:含管理员运行、路径选择、JAVA_HOME及Path环境变量设置,并通过java/javac -version命令快速验证,步骤清晰,适配Win10/Win11。
|
4月前
|
人工智能 开发工具 开发者
终端里跑 3D 老鼠,桌面窗口成摆锤;AI 大佬新公司估值百亿起
上周技术圈的信息挺杂,但有几条线索值得放在一起看。 一边,AI 产品继续往具体工作流里走:Claude Code 开始支持 Agent View,OpenAI 把 Codex 带到移动端;另一边,开发者社区继续整活:有人给 Claude Code 做实体旋钮,有人做 Claude 用量桌面仪表盘,还有人把终端做成能显示 3D 老鼠的玩具。
450 1
终端里跑 3D 老鼠,桌面窗口成摆锤;AI 大佬新公司估值百亿起

热门文章

最新文章