长时间COPY性能下降
 
通知
清除全部

长时间COPY性能下降  


gil213
帖子: 5
青梅新星
已加入: 1月 前

1.greenplum版本
GP6.4.0
2.问题
例如对一个如下形式的表

xxx=# \d+ test
                 Append-Only Table "public.test"
        Column         |     Type      | Modifiers | Storage | Stats target | Description 
-----------------------+---------------+-----------+---------+--------------+-------------
 time                  | bigint        |           | plain   |              | 
 noid                  | bigint        |           | plain   |              | 
 c1                    | numeric(15,5) |           | main    |              | 
 c2                    | numeric(15,5) |           | main    |              | 
 c3                    | numeric(15,5) |           | main    |              | 
 c4                    | numeric(15,5) |           | main    |              | 
 c5                    | bigint        |           | plain   |              | 
 c6                    | bigint        |           | plain   |              |
 c7                    | bigint        |           | plain   |              | 
 c8                    | bigint        |           | plain   |              | 
 c9                    | bigint        |           | plain   |              | 
 c10                   | bigint        |           | plain   |              | 

Compression Type: zstd
Compression Level: 1
Block Size: 32768
Checksum: t
Indexes:
    "ix_test_1" btree (noid, time)
Distributed by: (time, noid)
Options: appendonly=true, orientation=row, compresstype=zstd, compresslevel=1

进行COPY入库操作,开始是速度蛮快的,能达到2000条/s
随着入库量的增大,数据增长到2000w后,再入库渐渐能感觉到入库速度变慢了,
数据到6000w条时数据入库速度已经降到1000条/s了,再往后数据更加慢了
这个表上只有COPY和SELECT操作
表上有索引是因为这个表上同时会有SELECT查询在跑,去掉索引会影响查询性能
对于入库速度要求至少要1000条/s以上,否则数据输入端会有数据积压

想知道大概是什么问题?有什么解决办法
目前做过的尝试:
1.表上本来还有其它两个索引,去掉之后提升效果也不明显;
2.定时对表进行ANALYZE,有一些提升,但是仍然提升不大;

问题标签
4 回复
小青梅
帖子: 32
Admin
青梅少侠
已加入: 5月 前

表上有索引是主要原因,针对这样的场景,只有两种选择,1、删掉索引,2、换IOPS能力更好的磁盘,比如NVMe

回复
jasper
帖子: 8
Greenplum专家
青梅新星
已加入: 1月 前

删除索引就可以了

回复
阿福
帖子: 26
Greenplum专家
青梅少侠
已加入: 1月 前

带着索引不仅影响入库,应该也会影响到查询性能吧;还是建议先删除索引,然后做小批量gpload入库,然后重建索引。正表操作耗时的话,建议做日期分区表。

回复
GP_无处不在
帖子: 2
初出茅庐
已加入: 3周 前

这个是操作系统层面的问题,长时间的IO操作,会缓存和占用很多内存,内存中的cache/buff参数会变大,每插入几个文件后,需要手动释放内存,确保有足够的内存进行缓存数据,执行如下Linux系统命令释放内存:

echo 3 > /proc/sys/vm/drop_caches

 

 

 

回复

关注微信公众号

Greenplum中文社区

Greenplum官方微信群

扫码加入我们的技术讨论,请备注“网站”