-
Notifications
You must be signed in to change notification settings - Fork 958
Performance
agapple edited this page Mar 2, 2016
·
2 revisions
|
测试机器:
机器型号
oracle | CPU:E2630 96GB MEM, SATA 12*2T |
mysql | CPU:L5630 48GB MEM, SATA 2T |
愚公任务运行机器测试中部署在mysql机器上.
测试计划:
- 常见字段测试(主要包括:number,varchar,char,date,clob,blob)
- 针对不同主键的表(主要包括:单主键,多主键,不同主键类型,数字/字符等)
- 数据平均大小不同 (主要包括:100B/2KB)
- 全量/增量测试
create table test_all_one_pk ( id NUMBER(11) , name varchar2(32) , alias_name char(32) default ' ' not null, amount number(11,2), score number(20), text_b blob, text_c clob, gmt_create date not null, gmt_modified date not null, CONSTRAINT test_all_one_pk_id PRIMARY KEY (id) );
总记录数:2610000,统计记录数:5000,数据同步TPS:115,最长时间:9736,最小时间:8161,平均时间:8658
create table test_all_two_pk ( id NUMBER(11) , name varchar2(32) , alias_name char(32) default ' ' not null, amount number(11,2), score number(20), gmt_create date not null, gmt_modified date not null, CONSTRAINT test_all_two_pk_id PRIMARY KEY (id,name) );
总记录数:2689614,采样记录数:5000,同步TPS:30388,最长时间:264,最小时间:15,平均时间:23
create table test_all_small_data ( id NUMBER(11) , name varchar2(32) , alias_name char(32) default ' ' not null, amount number(11,2), score number(20), gmt_create date not null, gmt_modified date not null, CONSTRAINT test_all_small_data_id PRIMARY KEY (id) );
总记录数:180000,采样记录数:5000,同步TPS:4681,最长时间:215,最小时间:212,平均时间:213
create table test_all_large_data ( id NUMBER(11) , name varchar2(32) , alias_name char(32) default ' ' not null, amount number(11,2), score number(20), text_b varchar(1024), text_c varchar(1024), gmt_create date not null, gmt_modified date not null, CONSTRAINT test_all_large_data_id PRIMARY KEY (id) );
测试结果:
- 支持断点模式
总记录数:83207,采样记录数:83207,同步TPS:2827,最长时间:507,最小时间:79,平均时间:350
- 不支持断点模式
总记录数:83207,采样记录数:83207,同步TPS:9130,最长时间:541,最小时间:20,平均时间:108
反查线程数20的结果,每批1000条
总记录数:85000,采样记录数:5000,同步TPS:1073,最长时间:1001,最小时间:828,平均时间:931
反查线程数10的结果,每批1000条
总记录数:84944,采样记录数:5000,同步TPS:1530,最长时间:694,最小时间:602,平均时间:653
反查线程数15的结果,每批2000条
总记录数:40000,采样记录数:10000,同步TPS:1811,最长时间:1170,最小时间:1013,平均时间:1104
反查线程数20的结果,每批2000条
总记录数:99207,采样记录数:10000,同步TPS:2081,最长时间:1013,最小时间:897,平均时间:960
反查线程数30的结果,每批1000条
总记录数:35000,采样记录数:5000,同步TPS:2102,最长时间:487,最小时间:468,平均时间:475
反查线程数30的结果,每批2000条
总记录数:70000,采样记录数:10000,同步TPS:2185,最长时间:932,最小时间:892,平均时间:915
反查线程数20的结果,每批1000条
总记录数:80000,采样记录数:5000,同步TPS:2065,最长时间:540,最小时间:436,平均时间:484
反查线程数20的结果,每批2000条
总记录数:80000,采样记录数:10000,同步TPS:2093,最长时间:996,最小时间:928,平均时间:955
反查线程数20的结果,每批1000条
总记录数:85000,采样记录数:5000,同步TPS:2075,最长时间:503,最小时间:436,平均时间:481
- 每批大小1000和2000区别不大,线程数20~30 tps变化不大. 建议配置为每批大小1000,extractor/applier线程数为20.
- 100B大小,增量同步平均在2000tps左右,全量同步(select id>? and rownum<=xxx模式,支持断点)平均5000tps,全量同步(select(*)模式,不支持断点)平均30000tps
- 2KB大小,增量同步平均在2000tps左右,全量同步(select id>? and rownum<=xxx模式,支持断点)平均为2800tps,全量同步(select /+parallel(t)/ (*)模式,不支持断点)平均9000tps.
- 带blob/clob类型,2KB大小全量同步100tps,增量同步1000tps,增量比全量快的原因,主要是增量采用了多线程拉取。与不带blob/clob相比,全量为其1/20,增量为其1/2.
测试方式:源库按照特定200tps频率持续造数据(I/U/D比例为10:10:1),持续运行48小时,监控整个运行状态.
测试结果:总共同步3000w记录变更,整个jvm无内存泄漏,同步无中断,数据对比全通过