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

简介: 本文分享百万行数据导入四大进阶技巧:分区表减少锁竞争、禁用索引加速写入、并行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 DATA,kdb_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不愁。

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

相关文章
|
6月前
|
SQL 关系型数据库 MySQL
一张5000万行的表,加索引从45秒到0.02秒——索引设计你真的会吗
本文实测5000万订单表:无索引查询45秒,加索引后仅0.02秒(提升2250倍)。详解索引原理、建索引时机、联合索引最左前缀、覆盖索引及隐式转换陷阱,干货不啰嗦!
|
7月前
|
缓存 NoSQL 网络协议
如何为我的网站或应用集成IP归属地查询功能?
本文为网站/应用集成IP归属地查询的落地指南:强调“取对IP”是前提(仅信可信上游、严滤私网),采用“本地+Redis缓存+在线API+硬超时熔断”架构,失败自动降级至省/国家;区分展示型与风控型模型,确保可解释、可审计、可回滚,并严守隐私合规红线。(239字)
471 13
|
2月前
|
运维 监控 安全
国家评测机构首次给智能体分五级:这套五维框架,测试团队明天就能抄成上线验收清单
智能体上线评审常陷“五人五义”困局。全国首个五级智能体评测证书揭示破局关键:将主观判断拆为功能性、稳定性、安全、工程化、场景适配五大可证维度,每维设独立判据与证据链,推动验收从经验走向可审计、可复现、可追责。(239字)
国家评测机构首次给智能体分五级:这套五维框架,测试团队明天就能抄成上线验收清单
|
22天前
|
弹性计算
阿里云199元服务器怎么没有了?在这呢云服务器ECS通用算力型u1实例
阿里云199元/年服务器(2核4G/5M带宽/80G ESSD系统盘)仍在售,仅限企业用户!需通过ECS自定义购买,实名认证为企业即可,新老用户均享,续费同价。优惠券可至阿里云CLUB中心免费领取。阿里云服务器ECS官网:https://t.aliyun.com/U/AZBUsA
|
2月前
|
存储 人工智能 并行计算
新手小白如何购买阿里云GPU云服务器?新版阿里云GPU云服务器产品功能介绍及配置价格表
随着大模型推理、模型微调、AIGC生成、科学仿真、3D渲染等业务快速普及,越来越多个人开发者、学生、小型研发团队开始接触云端GPU算力。对于刚刚接触GPU云服务器的新手来说,面对繁多的实例规格族、不同GPU芯片型号、显存参数、多种计费模式,很容易踩坑。很多用户会出现显存选小跑不通模型,盲目选购高端实例造成高额账单,忽略GPU驱动安装、可用区库存限制、安全组端口配置等关键环节,购买完成之后实例无法正常识别显卡,甚至产生意料之外的高额扣费。
524 7
|
3月前
|
人工智能 Kubernetes 负载均衡
|
3月前
|
弹性计算 安全
阿里云服务器ECS按流量计费的话,1GB流量多少钱?流量超出会怎样?
阿里云ECS按流量计费仅对出网流量收费,各地域单价不同:北京/上海/杭州等为0.8元/GB,青岛0.72元/GB,海外低至0.5元/GB。超量不限速,但欠费将暂停公网访问。详情见官网定价页。阿里云服务器ECS官网:https://t.aliyun.com/U/AZBUsA
|
3月前
|
人工智能 弹性计算 安全
AI 网关能力评估解读:从七大板块看 AI 网关如何接住大模型流量
信通院将“AI网关”纳入可信云评估体系,确立七大能力板块、24项子能力,推动其从营销概念走向可测、可评、可证的标准化能力品类。本文聚焦工程实践,剖析AI网关如何解决流式Token计费、智能体多跳调用等核心难题,并解读“接得住、管得住、护得住”三层能力本质。
311 7
|
4月前
|
人工智能 监控 测试技术
银行业AI架构:从裸调API到六层技能体系
# 银行AI智能体架构实战:从单体到Skill协同的技术演进 ## 痛点:银行IT架构的三重困境 走在任何一家银行的科技部走廊里,你都能听到同样的叹息:系统又慢了、需求又排不上、监管又来查了。这不是某一家银行的困境,而是整个银行业IT架构的共性问题。我们把它拆解为三重困境。 **困境一:单体系
|
6月前
|
运维 容灾 关系型数据库
数据库容灾配置全攻略:同城容灾vs两地三中心,RPO、RTO一篇讲透
数据库小学妹带你轻松搞懂容灾核心概念!本文用通俗语言解析同城容灾、两地三中心、高可用集群,厘清RPO(数据丢失容忍)与RTO(恢复时效)关键指标,对比方案选型要点,并揭秘同步/异步复制、自动切换、读写分离等实战技术,附避坑指南与演练建议。