You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Native: single-record UPDATE through command() is about 26 percent slower on post3 than on 26.11.1 in the l1tpc paper cells #400
In the paper cells of the documents lane (l1tpc, the OLTP workload, native wheel, embedded arm, relaxed durability), the single-record UPDATE is slower on 26.11.1.post3 than on 26.11.1, at both table sizes, and insert and delete are not. The operation is db.begin(), then db.command("sql", "UPDATE Crud SET qty = 2 WHERE ckey=:c", {...}), then db.commit(); insert and delete have the same shape. These are the p50 times per operation of three repetitions each, measured on the same host with the same harness settings (the 26.11.1 rows are the first three passes, the post3 rows are the rerun of 2026-11-14):
size
operation
26.11.1, 3 reps (ms)
post3, 3 reps (ms)
median 26.11.1
median post3
post3 / 26.11.1
tpch1
update
0.084, 0.083, 0.085
0.106, 0.105, 0.106
0.084
0.106
1.262
tpch1
insert
0.089, 0.088, 0.090
0.087, 0.084, 0.084
0.089
0.084
0.944
tpch1
delete
0.179, 0.180, 0.181
0.177, 0.177, 0.177
0.180
0.177
0.983
tpch10
update
0.081, 0.083, 0.083
0.105, 0.104, 0.121
0.083
0.105
1.265
tpch10
insert
0.086, 0.086, 0.088
0.087, 0.083, 0.135
0.086
0.087
1.012
tpch10
delete
0.177, 0.177, 0.177
0.172, 0.182, 0.199
0.177
0.182
1.028
The update repetitions of each arm agree closely with each other (0.084, 0.083, 0.085 against 0.106, 0.105, 0.106 at the small size), so the difference is not noise between repetitions. It is about 26% or 22 microseconds per update. The post3 timed A/B (#315) did not see it: its one-row update figure runs set and save() inside explicit transactions with auto-transaction off, which is another path, and it has no command("sql", "UPDATE ...") figure.
What I do not know is which release introduced it. Between 26.11.1 and 26.11.1.post3 the native wheel changed in post1 (a create or update reads its row in the crossing of the statement, #329), in post2, and in post3 (#384, #385), so the cause can be any of them. I will bisect with a timed A/B of this exact shape (begin, UPDATE through command, commit, with insert and delete as controls) on the published wheels 26.11.1, 26.11.1.post1, 26.11.1.post2 and 26.11.1.post3, and post the table here. The paper row of this cell is the post3 row for now, as decided, and it is replaced if a later wheel fixes this.
The cause is the build of the native wheel, not the source. I measured it in three steps.
In a fresh database on my laptop (an E-core pair, the shape begin, UPDATE, commit only) the published wheels showed no slowdown: 26.11.1.post3 took 0.928 of the time of 26.11.1 (130 kept runs). In the process state of the paper cell on the host that ran the cell (the mini) the slowdown appears: 26.11.1.post1 (the CI build of its tag) 1.021, the published 26.11.1.post2 1.393 and the published 26.11.1.post3 1.324 (65 kept runs). The sources of the native glue did not change between post1 and post2, so I measured a third arm: the wheel that CI built from the post3 commit (run 43520464492) beside the published post3 wheel. The CI build runs the statement as fast as 26.11.1, the published one does not (the table is in #404, with the controls and the _build_info and binary comparison).
So the published 26.11.1.post3 is a slower build of the same source. The details and the process change I propose are in #404. I keep #400 open until a post4 wheel has been measured in the cell. The paper row of this cell stays the post3 row for now.
Activity
tae898 commentedon Nov 14, 2026
The cause is the build of the native wheel, not the source. I measured it in three steps.
In a fresh database on my laptop (an E-core pair, the shape
begin,UPDATE,commitonly) the published wheels showed no slowdown:26.11.1.post3took 0.928 of the time of26.11.1(130 kept runs). In the process state of the paper cell on the host that ran the cell (the mini) the slowdown appears:26.11.1.post1(the CI build of its tag) 1.021, the published26.11.1.post21.393 and the published26.11.1.post31.324 (65 kept runs). The sources of the native glue did not change betweenpost1andpost2, so I measured a third arm: the wheel that CI built from thepost3commit (run 43520464492) beside the publishedpost3wheel. The CI build runs the statement as fast as26.11.1, the published one does not (the table is in #404, with the controls and the_build_infoand binary comparison).So the published
26.11.1.post3is a slower build of the same source. The details and the process change I propose are in #404. I keep #400 open until a post4 wheel has been measured in the cell. The paper row of this cell stays thepost3row for now.