I have answer similar questions here, please see those as well.
Compact and scale up compactors, use tempodb_compaction_outstanding_blocks to measure the pending work.
depends a lot on many factors, and workload, I can tell you that we have seen cluster with 1M+ blocklist
Yes, try to compact as much as you can. but at some points you need to look at the cost to compact and cost to query an extra block, sometimes it’s better to scale up read path, sometimes it’s better to scale up compactor. it’s a tradeoff but usually less blocks will means better performance but beyond a blocksize it might impact negatively.
imagine if you had a one block of 1TB, it would be bad for perf. so you need to find a balance and see what works for your workload.