Going beyond millions of fragments #5947
Replies: 2 comments 2 replies
-
Beta Was this translation helpful? Give feedback.
-
|
I have implemented the version hint + head + parallel listing approach: #5997. Here are more detailed results (this time I am running it to 20000 commits, the trend is even more clear) Some terms:
SummaryThis is average over 20000 runs
S3 Express All Configurations
We can see that clearly S3 express requires the version hint to work efficiently S3 Standard All Configurations
Write is not too different, but load performance is improved. S3 Express vs S3 Standard (JSON hint async)
JSON vs file_size formatS3 Express:
S3 Standard:
There is improvement of 1ms/2ms, 8ms/6ms improvement with the file_size format. I am actually not sure if there is benefit in using this format. The improvement is there, but not a lot. Not sure if this is worth the complexity, curious what others think! Async vs Sync CommitS3 Express:
S3 Standard:
Async commit is for sure faster (10ms on average), but could result in worse load performance because it could result in out-of-date hint. |
Beta Was this translation helpful? Give feedback.











Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Last year, I posted a discussion thread about scaling Lance manifest beyond a flat list of fragments: #4000. In that discussion my main points were:
I think we definitely still want to learn more about 2, but for 1 and 3, things has changed a bit. Most noticeably, with Lance getting more and more popular in foundation AI labs, we are seeing very large Lance table users trying to do tables with over 100 trillion rows (EB level size) to train LLM with basically as much data as possible.
At this moment, we have 1M rows per fragment by default, and even if we extend that default, the manifest would end up with millions of fragments which would make both read and write performance suffer.
My initial thought was that we should just implement point 3, which evolves Lance to a multi-level manifest structure similar to Iceberg (but better). We had a discussion about this in community sync, and @westonpace brought up an invaluable point: at this scale, would it be better to just make it multiple Lance tables?
I personally really like this proposal, because:
The key question comes to: Is there any specific feature that user would gain by extending the table format to multi-level manifest, vs the partitioned namespace approach? Curious what people think!
I will try to produce some benchmark for 2 over the weekend so we can discuss things more concretely.
Beta Was this translation helpful? Give feedback.
All reactions