kettle 导入mysql太慢_kettle导入mysql/postgresql的性能对比

由于工作需要,简单测试了一下mysql/postgresql的导入性能,均在无特殊优化的前提下进行的测试。

一、测试环境

本地笔记本电脑,配置如下:

cpu: i7-5500u

内存:12G

硬件:固态,平均写入速度大概在230M/s

笔记本电脑采用vbox安装centos7.3,内核版本3.10以上。

分配给centos虚拟机的内存为6G。

mysql/postgresql数据库均以docker方式安装在centos系统之上。

mysql数据库版本:5.6.50

postgresql数据库版本:12.5

二、测试过程

输入:使用kettle的文本文件输入组件输出:采用kettle的表输出组件

**字段:**产品名称(varchar(200)),产品编号(varchar(200)),产品描述(varchar(2000))

**总数据量:**30万条。

每个数据库分别测试3次。

三、测试结果

**mysql数据库:**平均导入速度在240条/s

**postgresql数据库:**平均导入速度在13000条/s

四、mysql数据库调优

在kettle的mysql数据连接配置中增加如下参数:

useServerPrepStmts=false

rewriteBatchedStatements=true

useCompression=true

1、mysql配置参数说明useCompression=true,压缩数据传输,优化客户端和MySQL服务器之间的通信性能。

rewriteBatchedStatements=true  ,开启批量写功能

将会使大批量单条插入语句:

INSERT INTO t (c1,c2) VALUES ('One',1);

INSERT INTO t (c1,c2) VALUES ('Two',2);

INSERT INTO t (c1,c2) VALUES ('Three',3);

改写成真正的批量插入语句:

INSERT INTO t (c1,c2) VALUES ('One',1),('Two',2),('Three',3);

useServerPrepStmts=false  关闭服务器端编译,sql语句在客户端编译好再发送给服务器端,发送语句如上。

如果为true,sql会采用占位符方式发送到服务器端,在服务器端再组装sql语句。

占位符方式:INSERT INTO t (c1,c2) VALUES (?,?),(?,?),(?,?);

2、调优后性能

mysql数据库:导入速度在23000条/s

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值