【发布时间】:2020-12-11 03:16:10
【问题描述】:
我正在使用 Kafka Connect 流式传输具有 250,000,000 条记录的数据库。从源头读取没有问题,它在不明显的时间范围内被完全读取并存储在 Kafka 代理上。水槽侧的速度非常慢,需要几天才能完成。
我正在使用具有以下配置的 JDBC Sink 连接器:
"config": {
"auto.create": "true",
"auto.evolve": "true",
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"insert.mode": "upsert",
"pk.fields": "id",
"pk.mode": "record_value",
"tasks.max": "20",
"batch.size": "5000",
"max.poll.records": "5000"
}
我正在使用 aws postgres RDS 实例:db.m5.4xlarge(8 核 16vcpus 64gb ram)
sink 表除了主键之外没有索引。使用 RDS 性能洞察,DataFileRead 和 WALWriteLock 消耗了绝大多数活动(DataFileRead ~60%,WalWriteLock ~30-40%)。
我不熟悉数据库速度和管理,这是典型的表现吗?如果没有,我可以寻找哪些方法来提高性能?这是我的实例根本没有足够强大来处理写入的情况吗?
这是数据库负载的图像,尾端附近绿线的增长是我删除受影响接收器表上的所有索引时。
【问题讨论】:
标签: database postgresql apache-kafka apache-kafka-connect