lance-format / lance-format/lance

Reduce latency sensitivity to small files

Open
#3,751 0 comments 0 reactions 1 assignee View on GitHub

@wjones127 is already working on this.

Since Apr 28, 2025.

performance
Dominant language
Rust
Stars
7.1k
Forks
852
Avg merge
3d 18h
Merged PRs (30d)
272

Description

Currently, the number of IOPS used to scan files is O(N * M) where N is the number of fragments and M is the number of columns. (This assumes each fragment has one data file, for simplicity.)

We can see this below, in the time to scan 10 columns from 128 rows in a dataset from S3. At 128 fragments, there are is just one row per data file.

Image

For files smaller than the block size, we can reduce this to exactly N IOPS by:

  • Storing the data file size in bytes in the manifest, to avoid the initial HEAD request
  • Read the whole data file at once, if the file is smaller than the block size.

For files larger than this, we can still make this more O(N) by:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.