Some of the heavier, older shards with smaller db volumes are approaching fullness. We have tools for dealing with this in the general case now (i.e., the ability to move instances across shards, per T11670) but most of the data on most of these instances is old changeset hunk data in Differential.
There is no reason this data needs to stay in the database since it's rarely accessed (and, even when accessed, it's okay if it's a little laggy since it's just doing a cache fill anyway), and one of the goals of D9290 was to provide support for alternate storage so we could eventually improve this.
Specifically, since D9290, DifferentialModernHunk (then DifferentialHunkModern) has had a dataType column and a DATATYPE_FILE constant, but currently always reads and writes hunks in DATATYPE_TEXT instead. We can implement:
- Implement support for storing data in Files instead of in the database.
- Support migration between formats in some bin/differential mangle-hunks sort of workflow.
- Add a GC step to move text hunks to Files after, say, 30 or 60 days.
Moving hunks to files implies a (usually, very small) read performance penalty but should generally be transparent.