Skip to content

Upload to GCS performance improvement for large parts #1028

Description

@Vytenis-Valutkevicius

Background:
In our ClickHouse cluster we have several larger tables with rather small number of parts.
For example table of approximately 400GB size and around 20 parts. This means that some parts might have a size of around 150GB. For backup uploads to GCS Buckets this means that these larger parts currently are uploaded as a single stream and these uploads might take a multiple hours to complete (backup process sometimes takes over 12 hours).

Suggestion:
To improve upload to GCS performance I would suggest to implement multipart parallel uploads to GSS buckets. This should be possible to accomplish with Google XML API - https://cloud.google.com/storage/docs/xml-api/post-object-multipart
However, Google storage SDK used for uploads has this open issue googleapis/google-cloud-go#3219. Suggesting that parallel multipart upload should be implemented into storage SDK Transfer Manager class. This would simplify the parallel multipart implementation for large table parts.

In general my questions in this would be as follows:

  • Is this something you are aware about?
  • Could this be a future candidate for improvement?
  • If needed we could provide some possible workarounds we are looking into.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions