fix(nas): merge_increment计数免疫并发写者——inserted改用Connection.total_changes(只计本连接INSERT生效行),原after-before会被03:00合并窗口并发的bs_5m写入污染(08-25实锤skipped(dup)=-4881,5m插的行被记成merge的inserted);+2测试钉计数契约(新/dup/混掺/他源行不计入);venv310 644绿 [nas]
This commit is contained in:
@@ -45,14 +45,17 @@ def main():
|
||||
|
||||
inc_count = cur.execute("SELECT COUNT(*) FROM inc.dbbardata").fetchone()[0]
|
||||
before = cur.execute("SELECT COUNT(*) FROM main.dbbardata").fetchone()[0]
|
||||
# inserted 用 total_changes(只计本连接写入): after-before 会被并发写者污染
|
||||
# (2026-08-25 实锤: 03:00 合并窗口 bs_5m 同写主库, skipped(dup) 被挤成负数)
|
||||
changes0 = conn.total_changes
|
||||
cur.execute(
|
||||
"INSERT OR IGNORE INTO main.dbbardata(%s) SELECT %s FROM inc.dbbardata"
|
||||
% (COLS, COLS))
|
||||
conn.commit()
|
||||
inserted = conn.total_changes - changes0
|
||||
after = cur.execute("SELECT COUNT(*) FROM main.dbbardata").fetchone()[0]
|
||||
conn.close()
|
||||
|
||||
inserted = after - before
|
||||
skipped = inc_count - inserted
|
||||
print("MERGED inc=%d inserted=%d skipped(dup)=%d before=%d after=%d"
|
||||
% (inc_count, inserted, skipped, before, after))
|
||||
|
||||
Reference in New Issue
Block a user