[ https://issues.apache.org/jira/browse/FLINK-38184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hongshun Wang updated FLINK-38184: ---------------------------------- Description: When I have a big Postgres source table(1 billion data), then the checkpoint will cost multiple minutes which will block the whole reading. The main cost is org.apache.flink.core.memory.DataOutputSerializer#getCopyOfBuffer. !image-2025-08-04-11-03-18-074.png! To be host, it's a redundant operation. For one split, it only need one time of out.getCopyOfBuffer rather than multiple times. ```java private void writeFinishedSplitsInfo( List<FinishedSnapshotSplitInfo> finishedSplitsInfo, DataOutputSerializer out) throws IOException { final int size = finishedSplitsInfo.size(); out.writeInt(size); for (FinishedSnapshotSplitInfo splitInfo : finishedSplitsInfo) { splitInfo.serialize(out); } } ``` was: When I have a big Postgres source table(1 billion data), then the checkpoint will cost multiple minutes which will block the whole reading. The main cost is org.apache.flink.core.memory.DataOutputSerializer#getCopyOfBuffer. !image-2025-08-04-11-03-18-074.png! To be host, it's a redundant operation. For one split, it only need one time of out.getCopyOfBuffer rather than multiple times. > CDC no need to getCopyOfBuffer for each split info. > --------------------------------------------------- > > Key: FLINK-38184 > URL: https://issues.apache.org/jira/browse/FLINK-38184 > Project: Flink > Issue Type: Improvement > Components: Flink CDC > Affects Versions: cdc-3.4.0 > Reporter: Hongshun Wang > Priority: Major > Labels: pull-request-available > Fix For: cdc-3.5.0 > > Attachments: image-2025-08-04-11-03-18-074.png > > > When I have a big Postgres source table(1 billion data), then the checkpoint > will cost multiple minutes which will block the whole reading. The main cost > is org.apache.flink.core.memory.DataOutputSerializer#getCopyOfBuffer. > !image-2025-08-04-11-03-18-074.png! > To be host, it's a redundant operation. For one split, it only need > one time of out.getCopyOfBuffer rather than multiple times. > ```java > private void writeFinishedSplitsInfo( > List<FinishedSnapshotSplitInfo> finishedSplitsInfo, DataOutputSerializer out) > throws IOException { > final int size = finishedSplitsInfo.size(); > out.writeInt(size); > for (FinishedSnapshotSplitInfo splitInfo : finishedSplitsInfo) { > splitInfo.serialize(out); > } > } > ``` -- This message was sent by Atlassian Jira (v8.20.10#820010)