Xiao Liu created HBASE-30177:
--------------------------------
Summary: Make block caching configurable for MOB compaction reads
Key: HBASE-30177
URL: https://issues.apache.org/jira/browse/HBASE-30177
Project: HBase
Issue Type: Improvement
Components: mob, regionserver
Reporter: Xiao Liu
Assignee: Xiao Liu
Fix For: 2.7.0, 3.0.0-beta-2, 2.5.15, 2.6.6
{\{DefaultMobStoreCompactor}} currently resolves existing MOB reference cells
with block caching enabled. During a user-triggered major MOB compaction, this
can cause large amounts of MOB file data read by the background compaction task
to be inserted into the RegionServer block cache.
For large MOB-enabled tables, these compaction reads are often one-time reads
over cold MOB files. Caching those blocks may evict hotter blocks used by
foreground reads, reducing block cache hit ratio and increasing read latency
while or after MOB compaction runs.
This issue proposes adding a configuration option to control whether MOB
compaction should cache blocks when resolving existing MOB references.
Proposed configuration:
{code:language=plaintext|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
hbase.mob.compaction.cache.blocks
{code}
Default value:
{code:language=plaintext|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
true
{code}
The default should remain \{{true}} to preserve the existing behavior.
Operators that want to avoid block cache pollution from background MOB
compaction reads can set it to \{{false}}.
Scope:
* Add a new MOB compaction-specific config.
* Use the config in \{{DefaultMobStoreCompactor}} when calling
\{{HMobStore.resolve}}.
* Keep normal MOB reads and existing scan/get cache behavior unchanged.
* Add unit tests for the default value and disabled configuration.
This gives operators a way to reduce cache churn during large MOB compactions
without changing the default behavior for existing deployments.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)