lance-format / lance-format/lance

Improve version resolution performance for storage that does not support lexicographically sorted listing

Open
#4,161 2 comments 0 reactions 1 assignee View on GitHub

@jackye1995 is already working on this.

Since Jul 24, 2025.

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

Description

Currently resolving the latest version of the table requires listing. With scheme v2, for storages that return results in lexicographically sorted order, we just request a reverse sort and list the first value to find the latest version. But when the storage does not support lexicographically sorted result (e.g. S3 express), we have to list everything and sort it to find the latest version, which becomes slow especially when there are a lot of versions accumulated.

There is one way we could evaluate if it could improve the situation:

instead of listing, we do HEAD. Basically you just continue to run HEAD with increasing version number until you cannot find the manifest of version k, then k-1 is the latest version. That would require some notion of the minimum version (like Delta's _last_checkpoint) and assume that file is always mostly up to date, but it would let us get away with discrepancy of listing behaviors across storage and perf concerns since HEAD is typically very fast and you can issue HEAD in parallel.

This might or might not be better, but just put it here so that at least we can track it and if anyone is interested to compare the 2 approaches, he/she can pick up.

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.