TimescaleDB在ZFS和Ext4文件系统上的空间占用对比
信息 | |
---|---|
操作系统 | CentOS7.4 |
PosgtreSQL版本 | 10.4 |
TimescaleDB版本 | 0.12.1 |
ZFS压缩算法 | LZ4、GZIP |
测试场景1: 一列timestamp字段 + N列字符串字段
数据量500万行
1、10列字符串字段,所有行字符数据都一致,每列字符数据亦重复
表结构:1
2
3
4
5
6
7
8
9
10
11
12
13create table ext4allcharextreme(
time timestamp not null,
c1 varchar(20),
c2 varchar(20),
c3 varchar(20),
c4 varchar(30),
c5 varchar(30),
c6 varchar(30),
c7 varchar(40),
c8 varchar(40),
c9 varchar(50),
c10 varchar(50)
) tablespace ext4allcharextreme;
使用命令查看数据文件的大小:du -h -m --max-depth=1
,注:每张表都是使用独立的表空间
在psql中使用命令查看表空间大小:\db+ ext4allcharextreme
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 2044MB | 213MB | 181MB |
表空间 | 2044MB | 2038MB | 2038MB |
压缩率 | 2044/213=9.6x | 2044/181=11.3x | |
空间比率 | 10.4% | 8.85% |
2、10列字符串字段,所有行字符数据都是随机的
表结构:1
2
3
4
5
6
7
8
9
10
11
12
13create table ext4allchar10(
time timestamp not null,
c1 varchar(20),
c2 varchar(20),
c3 varchar(20),
c4 varchar(30),
c5 varchar(30),
c6 varchar(30),
c7 varchar(40),
c8 varchar(40),
c9 varchar(50),
c10 varchar(50)
) tablespace ext4allchar10;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 2045MB | 1958MB | 1462MB |
表空间 | 2045MB | 2038MB | 2038MB |
压缩率 | 2045/1958=1.044x | 2045/1462=1.4x | |
空间比率 | 95.7% | 71.5% |
3、20列字符串字段,所有行字符数据都是随机的
表结构:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23create table ext4allchar20(
time timestamp not null,
c1 varchar(20),
c2 varchar(20),
c3 varchar(20),
c4 varchar(20),
c5 varchar(20),
c6 varchar(30),
c7 varchar(30),
c8 varchar(30),
c9 varchar(30),
c10 varchar(30),
c11 varchar(40),
c12 varchar(40),
c13 varchar(40),
c14 varchar(40),
c15 varchar(40),
c16 varchar(50),
c17 varchar(50),
c18 varchar(50),
c19 varchar(50),
c20 varchar(50)
) tablespace ext4allchar20;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 4091MB | 4026MB | 3016MB |
表空间 | 4090MB | 4087MB | 4087MB |
压缩率 | 4091/4026=1.016x | 4091/3016=1.36x | |
空间比率 | 98.4% | 73.7% |
4、30列字符串字段,所有行字符数据都是随机的
表结构:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33create table ext4allchar30(
time timestamp not null,
c1 varchar(20),
c2 varchar(20),
c3 varchar(20),
c4 varchar(20),
c5 varchar(20),
c6 varchar(20),
c7 varchar(20),
c8 varchar(30),
c9 varchar(30),
c10 varchar(30),
c11 varchar(30),
c12 varchar(30),
c13 varchar(30),
c14 varchar(30),
c15 varchar(40),
c16 varchar(40),
c17 varchar(40),
c18 varchar(40),
c19 varchar(40),
c20 varchar(40),
c21 varchar(40),
c22 varchar(50),
c23 varchar(50),
c24 varchar(50),
c25 varchar(50),
c26 varchar(50),
c27 varchar(50),
c28 varchar(50),
c29 varchar(50),
c30 varchar(50)
) tablespace ext4allchar30;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 5765MB | 5717MB | 4288MB |
表空间 | 5765MB | 5763MB | 5763MB |
压缩率 | 5765/5717=1.008x | 5765/4288=1.34x | |
空间比率 | 99.17% | 74.38% |
测试场景2: 一列timestamp字段 + N列整型字段
数据量1000万行
1、10列整型字段,所有行整数数据都一致
表结构:1
2
3create table ext4allintextreme(
time timestamp not null, i1 int,i2 int,i3 int,i4 int,i5 int,i6 bigint,i7 bigint,i8 bigint,i9 bigint,i10 bigint
) tablespace ext4allintextreme;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 1333MB | 340MB | 227MB |
表空间 | 1332MB | 1257MB | 1257MB |
压缩率 | 1333/340=3.92x | 1333/227=5.87x | |
空间比率 | 25.5% | 17.0% |
2、10列整型字段,所有行整数数据都是随机的
表结构:1
2
3create table ext4allint10(
time timestamp not null, i1 int,i2 int,i3 int,i4 int,i5 int,i6 bigint,i7 bigint,i8 bigint,i9 bigint,i10 bigint
) tablespace ext4allint10;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 1332MB | 1003MB | 830MB |
表空间 | 1332MB | 1257MB | 1257MB |
压缩率 | 1332/1003=1.33x | 1332/830=1.6x | |
空间比率 | 75.3% | 62.3% |
3、20列整型字段,所有行整数数据都是随机的
表结构:1
2
3create table ext4allint20(
time timestamp not null, i1 int,i2 int,i3 int,i4 int,i5 int,i6 int,i7 int,i8 int,i9 int,i10 int, i11 bigint, i12 bigint,i13 bigint,i14 bigint,i15 bigint,i16 bigint,i17 bigint,i18 bigint,i19 bigint,i20 bigint
) tablespace ext4allint20;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 1871MB | 1671MB | 1426MB |
表空间 | 1870MB | 1828MB | 1828MB |
压缩率 | 1871/1671=1.12x | 1871/1426=1.31x | |
空间比率 | 89.3% | 76.2% |
4、30列整型字段,所有行整数数据都是随机的
表结构:1
2
3create table ext4allint30(
time timestamp not null, i1 int,i2 int,i3 int,i4 int,i5 int,i6 int,i7 int,i8 int,i9 int,i10 int, i11 int, i12 int,i13 int,i14 int,i15 int,i16 bigint,i17 bigint,i18 bigint,i19 bigint,i20 bigint, i21 bigint,i22 bigint,i23 bigint,i24 bigint,i25 bigint,i26 bigint,i27 bigint,i28 bigint,i29 bigint,i30 bigint
) tablespace ext4allint30;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 2481MB | 2289MB | 2230MB |
表空间 | 2480MB | 2461MB | 2461MB |
压缩率 | 2481/2289=1.08x | 2481/2230=1.11x | |
空间比率 | 92.3% | 89.9% |
测试场景3: 一列timestamp字段 + N列real类型字段
数据量500万行
1、10列real类型字段,所有行real列数据都一致
表结构:1
2
3create table ext4allrealextreme(
time timestamp not null, i1 real,i2 real,i3 real,i4 real,i5 real,i6 real,i7 real,i8 real,i9 real,i10 real
) tablespace ext4allrealextreme;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 549MB | 170MB | 121MB |
表空间 | 549MB | 520MB | 520MB |
压缩率 | 549/170=3.23x | 549/121=4.54x | |
空间比率 | 30.9% | 22% |
2、10列real类型字段,所有行real列数据都是随机数
表结构:1
2
3create table ext4allreal10(
time timestamp not null, i1 real,i2 real,i3 real,i4 real,i5 real,i6 real,i7 real,i8 real,i9 real,i10 real
) tablespace ext4allreal10;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 549MB | 375MB | 304MB |
表空间 | 549MB | 519MB | 519MB |
压缩率 | 549/375=1.46x | 549/304=1.8x | |
空间比率 | 68.3% | 55.3% |
3、20列real类型字段,所有行real列数据都是随机数
表结构:1
2
3create table ext4allreal20(
time timestamp not null, i1 real,i2 real,i3 real,i4 real,i5 real,i6 real,i7 real,i8 real,i9 real,i10 real, i11 real, i12 real,i13 real,i14 real,i15 real,i16 real,i17 real,i18 real,i19 real,i20 real
) tablespace ext4allreal20;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 751MB | 568MB | 476MB |
表空间 | 750MB | 700MB | 700MB |
压缩率 | 751/568=1.32x | 751/476=1.58x | |
空间比率 | 75.6% | 63.4% |
4、30列real类型字段,所有行real列数据都是随机数
表结构:1
2
3create table ext4allreal30(
time timestamp not null, i1 real,i2 real,i3 real,i4 real,i5 real,i6 real,i7 real,i8 real,i9 real,i10 real, i11 real, i12 real,i13 real,i14 real,i15 real,i16 real,i17 real,i18 real,i19 real,i20 real, i21 real,i22 real,i23 real,i24 real,i25 real,i26 real,i27 real,i28 real,i29 real,i30 real
) tablespace ext4allreal30;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 944MB | 833MB | 669MB |
表空间 | 943MB | 893MB | 893MB |
压缩率 | 1.13x | 1.41x | |
空间比率 | 88.2% | 70.9% |
测试场景4: 一列timestamp字段 + N列double类型字段
数据量500万行
1、10列double类型字段,所有行double列数据都一致
表结构:1
2
3create table ext4alldoubleextreme(
time timestamp not null, i1 float,i2 float,i3 float,i4 float,i5 float,i6 float,i7 float,i8 float,i9 float,i10 float
) tablespace ext4alldoubleextreme;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 752MB | 184MB | 127MB |
表空间 | 752MB | 699MB | 699MB |
压缩率 | 4.08x | 5.9x | |
空间比率 | 24.5% | 16.9% |
2、10列double类型字段,所有行double列数据都是随机数
表结构:1
2
3create table ext4alldouble10(
time timestamp not null, i1 float,i2 float,i3 float,i4 float,i5 float,i6 float,i7 float,i8 float,i9 float,i10 float
) tablespace ext4alldouble10;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 747MB | 568MB | 511MB |
表空间 | 747MB | 700MB | 700MB |
压缩率 | 1.31x | 1.46x | |
空间比率 | 76% | 68.4% |
3、20列double类型字段,所有行double列数据都是随机数
表结构:1
2
3create table ext4alldouble20(
time timestamp not null, i1 float,i2 float,i3 float,i4 float,i5 float,i6 float,i7 float,i8 float,i9 float,i10 float, i11 float, i12 float,i13 float,i14 float,i15 float,i16 float,i17 float,i18 float,i19 float,i20 float
) tablespace ext4alldouble20;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 1147MB | 1037MB | 894MB |
表空间 | 1146MB | 1095MB | 1095MB |
压缩率 | 1.1x | 1.28x | |
空间比率 | 90.46% | 77.9% |
4、30列double类型字段,所有行double列数据都是随机数
表结构:1
2
3create table ext4alldouble30(
time timestamp not null, i1 float,i2 float,i3 float,i4 float,i5 float,i6 float,i7 float,i8 float,i9 float,i10 float, i11 float, i12 float,i13 float,i14 float,i15 float,i16 float,i17 float,i18 float,i19 float,i20 float, i21 float,i22 float,i23 float,i24 float,i25 float,i26 float,i27 float,i28 float,i29 float,i30 float
) tablespace ext4alldouble30;
测试结果:
ext4 | zfs-lz4 | zfs-gzip | |
---|---|---|---|
空间 | 1538MB | 1434MB | 1242MB |
表空间 | 1538MB | 1483MB | 1483MB |
压缩率 | 1.07x | 1.23x | |
空间比率 | 93.2% | 80.8% |