运行于RDS的MySQL数据库导入速度异常缓慢
RDS MySQL导入300MB数据库耗时过长的排查方向
gp2存储的IO性能不足
40GB的gp2存储基线IOPS只有120(3 IOPS/GB),数据库导入属于高IO密集型操作,大量的随机写、redo日志刷新都会占满IOPS,导致严重的IO等待。而且gp2的突发IOPS额度有限,一旦用完就会降到基线水平,进一步拖慢导入速度。加密功能带来的CPU开销
启用数据加密后,所有写入磁盘的数据都需要加密,读取时还要解密,这会额外消耗实例的CPU资源。db.t3.large是突发性能实例,CPU资源被加密操作占用后,很容易耗尽CPU积分,进入性能受限状态,直接影响导入的处理速度。t3实例的突发性能限制
t3系列实例依赖CPU积分提供超出基线的性能。如果实例在导入前已经消耗了部分积分,或者导入过程中CPU占用持续过高,积分耗尽后CPU会被限制在20%的基线水平,无法支撑导入所需的计算能力,导致导入卡顿。MySQL默认配置未针对导入优化
默认配置下的MySQL参数不适合大文件导入场景:innodb_flush_log_at_trx_commit=1会让每个事务都强制刷新日志到磁盘,极大降低写入效率;innodb_buffer_pool_size如果设置过小,无法缓存足够的导入数据,导致频繁的磁盘IO;bulk_insert_buffer_size、max_allowed_packet等参数未调大,也会限制批量导入的速度。
导入方式不合理
如果采用单条INSERT语句逐条导入,或者没有关闭自动提交(autocommit=1),会产生大量小事务,每个事务都要执行日志刷新、锁操作,大幅增加耗时。另外,导入时如果没有临时禁用触发器、外键约束,也会额外消耗资源,拖慢进度。
内容的提问来源于stack exchange,提问作者George Joseph
相关产品推荐
相关产品推荐

