Use Iceberg position deletes and equality deletes: understand tradeoffs and trigger merge-on-read vs copy-on-write
domain: iceberg.apache.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Set the write.delete.mode table property to merge-on-read to enable delete files instead of full data file rewrites on DELETE statements
Issue a row-level DELETE and inspect the newly written delete file to identify whether it is a position delete (file path + row position) or equality delete (column values)
Read the table and observe that the query engine merges the base data file with the delete file at scan time
Trigger a compaction with the rewrite_data_files procedure to physically remove deleted rows and convert back to clean data files
Set write.delete.mode to copy-on-write on a write-heavy table and confirm that DELETEs now rewrite affected data files immediately
Known gotchas
Equality delete files require a full scan of every data file in the matching partition because the engine cannot determine which files contain the deleted keys without reading them; position deletes are more efficient for point updates
Accumulating many unmerged delete files degrades read performance significantly; schedule regular rewrite_data_files compaction to bound the delete file ratio
Engines differ in delete file support: some older query engines only support position deletes, not equality deletes; check engine compatibility before choosing a delete mode
Give your agent this knowledge — and 15,600+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?