网通社科技快报

百亿数据写入MySQL优化实践 从231天压缩至3.5小时

面对100亿行数据写入MySQL任务,常规逐条INSERT在SSD环境下需115–231天;经系统性优化后,实测可缩短至约3.5小时。该实践强调:首要判断数据是否真应进入MySQL——若为写多读少、按时间扫描的日志或设备流水,优先考虑ClickHouse、Doris等更适配存储;仅当业务强约束要求事务一致性与高频分片检索时,才启动优化。确定使用MySQL后,第一步为空间降维:将100亿行拆为1500–2000张物理分表,单表控制在500万–1000万行黄金区间,避免B+树深度超四层导致IO雪崩。第二步为IO降维:关闭自动提交、临时禁用唯一索引校验、采用LOAD DATA INFILE或BulkCopy工具,结合32GB内存+NVMe SSD实现单机50万行/秒吞吐;进一步通过3–20台实例并行写入,达成79.4万行/秒总吞吐目标100亿行/3.5小时。第三步为工程兜底:引入全局唯一ID保障幂等性,记录偏移量支持断点续传,并通过行数比对与抽样校验确保数据一致。所有参数如innodb_flush_log_at_trx_commit、bulk_insert_buffer_size需依硬件调优,且必须基于真实数据压测验证。最终性能跨越非依赖单一技巧,而是问题本质重构的结果。