[
https://issues.apache.org/jira/browse/LUCENE-8263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16543346#comment-16543346
]
Michael McCandless commented on LUCENE-8263:
--------------------------------------------
+1, patch looks great, and those write amplification simulation experiments are
wonderful; a default of 33% makes sense.
It's much more intuitive to the user to set the limit on overall % deletes,
than the cryptic existing {{reclaimDeletesWeight}}.
It's surprising how many tests relied on the behavior of the default merge
policy.
One question about this comment:
{quote}// if this segment is merging, then its deletes are being reclaimed
already. + // only count live docs in the total max doc{quote}
It's true that a merging segments will have deletions reclaimed, but, the
number of deletions that will be reclaimed is the deletion count for that
segment when the merge first kicked off. Any new deletions that accumulate on
that segment, won't be merged away, and will carry over to the merged segment,
yet I think the logic in the patch will "pretend" those carry over deletions
will also be merged away, because the {{MergePolicy.size}} method checks the
live deletion count. I don't think we need to fix this here ... and, once the
merge finishes, and the deletes carry over, the logic will then be correct when
considering that merged segment for further merging.
> Add indexPctDeletedTarget as a parameter to TieredMergePolicy to control more
> aggressive merging
> ------------------------------------------------------------------------------------------------
>
> Key: LUCENE-8263
> URL: https://issues.apache.org/jira/browse/LUCENE-8263
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Erick Erickson
> Assignee: Erick Erickson
> Priority: Major
> Attachments: LUCENE-8263.patch
>
>
> Spinoff of LUCENE-7976 to keep the two issues separate.
> The current TMP allows up to 50% deleted docs, which can be wasteful on large
> indexes. This parameter will do more aggressive merging of segments with
> deleted documents when the _total_ percentage of deleted docs in the entire
> index exceeds it.
> Setting this to 50% should approximate current behavior. Setting it to 20%
> caused the first cut at this to increase I/O roughly 10%. Setting it to 10%
> caused about a 50% increase in I/O.
> I was conflating the two issues, so I'll change 7976 and comment out the bits
> that reference this new parameter. After it's checked in we can bring this
> back. That should be less work than reconstructing this later.
> Among the questions to be answered:
> 1> what should the default be? I propose 20% as it results in significantly
> less space wasted and helps control heap usage for a modest increase in I/O.
> 2> what should the floor be? I propose 10% with _strong_ documentation
> warnings about not setting it below 20%.
> 3> should there be two parameters? I think this was discussed somewhat in
> 7976. The first cut at this used this number for two purposes:
> 3a> the total percentage of deleted docs index-wide to trip this trigger
> 3b> the percentage of an _individual_ segment that had to be deleted if the
> segment was over maxSegmentSize/2 bytes in order to be eligible for merging.
> Empirically, using the same percentage for both caused the merging to hover
> around the value specified for this parameter.
> My proposal for <3> would be to have the parameter do double-duty. Assuming
> my preliminary results hold, you specify this parameter at, say, 20% and once
> the index hits that % deleted docs it hovers right around there, even if
> you've forceMerged earlier down to 1 segment. This seems in line with what
> I'd expect and adding another parameter seems excessively complicated to no
> good purpose. We could always add something like that later if we wanted.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]