kettle导入mysql/postgresql的性能对比

原创
01/26 11:12
阅读数 234

由于工作需要,简单测试了一下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配置参数说明

  1. useCompression=true,压缩数据传输,优化客户端和MySQL服务器之间的通信性能。
  2. 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);
  3. useServerPrepStmts=false 关闭服务器端编译,sql语句在客户端编译好再发送给服务器端,发送语句如上。 如果为true,sql会采用占位符方式发送到服务器端,在服务器端再组装sql语句。 占位符方式:INSERT INTO t (c1,c2) VALUES (?,?),(?,?),(?,?);

2、调优后性能

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

注:参数说明参考https://www.cnblogs.com/cl1234/p/9627833.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部