Skip to content

Constant-object DELETE over many subjects reads one slot per subject #2060

Open

Description

@bplatz

With #2008 a retraction names a stored fact, so a constant-object DELETE (DELETE { ?s ex:p "v" } WHERE { ?s ex:q ?x }, DELETE DATA of many subjects) reads each (graph, subject, predicate) slot to find the fact. On an indexed ledger that costs 1.09–1.13× main on #2008's bench, where main committed phantom retractions without reading.

One POST read per (predicate, object) pair would serve all of a pair's subjects. It needs a novelty read by pair beside today's per-slot one, and a bound for popular pairs, where one POST read would scan every subject holding the value while the DELETE names a few.

Found while reviewing #2008 (listed in its follow-ups).

Activity

  1. added
    P3Backlog: valid, low payoff-per-effort
    area:transactStaging, commit, import/bulk-import, novelty, retraction semantics
    performancePerformance improvement (release notes: Performance)
    on Oct 11, 2026
  2. bplatz commented on Oct 12, 2026

    @bplatz
    ContributorAuthor

    #2087's first item is this one (one POST read per (predicate, object) pair, with a bound for popular pairs). A PR that fixes that item should close this one too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Backlog: valid, low payoff-per-effortarea:transactStaging, commit, import/bulk-import, novelty, retraction semanticsperformancePerformance improvement (release notes: Performance)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions