Tiered Storage Limitations



This document describes the current limitations and operational impact of Infrequent Access (IA) storage, including feature constraints, cold-read throttling, tool compatibility, and query performance uncertainty.

Feature limitations

LimitationDescription
Hash / Key partitionsCannot be set to IA
Index-independent settingCannot set IA on indexes independently
TTL auto-tieringAutomatic cold/hot tiering based on business fields is not supported
Syntax conflictSTORAGE_CLASS and ENGINE_ATTRIBUTE cannot be specified simultaneously
Partition selector mixingnames_in / less_than / values_in cannot be used simultaneously
TiFlashDoes not follow IA; data always remains local
Cache level scopeThe IA cache level applies at the underlying TiKV physical cluster level, rather than to an individual logical instance or to a specific table or partition. All logical instances sharing the same physical cluster are affected by a cache level change on any one of them. Control at the logical instance level is planned for a future release
Cache level enablementChanging the IA cache level requires a separate allowlist on top of the tiered storage private preview enablement, and is disabled by default. Contact TiDB Cloud Support to enable it
Segment size adjustmentkvengine.ia.segment-size can be changed only on TiDB Cloud BYOC, and takes effect only after a rolling restart of the TiKV nodes
Cache level provisioningA cache level change takes effect as a hot update, but the underlying resources are provisioned automatically by TiDB Cloud, which might take some time
Transition progress visibilityA row in INFORMATION_SCHEMA.TIKV_STORAGE_CLASS_TRANSITIONS is visible only if you have the ALL privilege on the table. Rows for tables that you cannot access are skipped without an error
Transition progress freshnessConversion progress is collected every 10 seconds, so the values in INFORMATION_SCHEMA.TIKV_STORAGE_CLASS_TRANSITIONS are not real-time

Access throttling constraints

Since shared physical clusters have limited object storage bandwidth, IA cold storage access must comply with the following limits:

Constraint dimensionLimitReason
Single SQL cold read throughput≤ 100 MiB/sPrevents one query from consuming excessive bandwidth
Total concurrent cold read throughput≤ 1 GiB/s (≤ 10 concurrent)Protects other tenants in the cluster
TiKV single miss load size≤ ~3 MiB (estimated)Segments from 3 LSM levels

If your business involves sustained heavy access to cold data, IA is not recommended; revert the table to Standard storage. To ensure system stability, hard throttling for cold data access will be added in a future technical release. For now, you must comply with the constraints above.

You can monitor single SQL cold data access volume via the IA Remote Read Segment Size panel in Cloud Console → Monitoring → Diagnosis → Slow Query → Coprocessor. To monitor IA cache behavior for the whole cluster, use the IA Cache Performance panels described in Tiered Storage Observability.

Impact on peripheral tools

ToolImpactCompatibility
TiCDCLogical data semantics unchanged; init scan/reading old data may have higher latency; region changes handled as normalCompatible
BR backup & restorePreserves storage class metadata; IA tables continue to load under IA semantics after restoreCompatible
IMPORT INTOImported data transitions to IA via flush/compaction; large-range validation after import may encounter cold cacheCompatible
PITRPreserves storage class metadata; schema manager re-syncs after restoreCompatible

Risk isolation mechanisms

After setting IA on a table, the system uses the following measures to isolate IA and non-IA tables:

Region level:

  • IA tables/partitions occupy dedicated regions, triggering necessary splits
  • Adjacent regions with different storage classes are restricted from merging, preventing hot/cold data mixing
  • A single region is either entirely IA or entirely non-IA

Compute layer:

  • Standard and IA tables have no isolation at the compute layer — TiDB does not have separate isolation strategies for the two table types

Storage layer:

  • Cold read rate limiting

Emergency recovery methods

If issues arise with IA tables, you and the TiDB Cloud team can use the following methods:

MethodScenarioPriorityDescription
IA → Standard switch-backYou find performance unacceptableYour primary choiceSystem reloads data locally, bypassing the remote path
Flow Control (already available)Control traffic between IA tables and object storageTiDB Cloud team's choiceRate-limiting protects cluster stability; managed by the TiDB Cloud team
Contact TiDB Cloud SupportA storage class conversion is stuck: DURATION keeps growing while COMPLETED_REPLICAS does not increase or stays NULLRequiredYou cannot resolve a stuck conversion yourself. For how to detect it, see Tiered Storage Observability

IA local cache and query performance uncertainty

Tiered storage maintains a local IA data cache (managed by IaManager) to accelerate repeated access to recently accessed cold data. However, the following key facts should be understood:

  • Cache capacity is adjustable, but cache behavior is still system-managed: You can select an IA cache level in the Cloud Console to control how much IA data is cached on local disks. Eviction policies remain managed by the system: you cannot specify which data stays in the cache, and the cache level applies to the underlying TiKV physical cluster rather than to an individual logical instance, table, or partition. Cache hit rates depend on actual access patterns: concentrated access can exceed 95%, while scattered access may fall below 95%.
  • IA query response time is non-deterministic: When a query hits the local cache, performance is close to Standard tables. However, when data must be loaded from remote object storage (cache miss), each remote request adds approximately 500ms~2s of latency. A single SQL execution may involve multiple remote loads, causing latency to accumulate. Therefore, IA table query response times are not as predictable as Standard tables — the business side should plan accordingly.
  • Recommended: use partitioned tables to precisely control cold data scope: Use partitioned tables, setting only confirmed low-frequency historical partitions to IA while keeping active partitions as Standard. This limits the cache uncertainty to a well-defined data range, rather than exposing the entire table's query performance to cache miss risk.
  • Increasing cache space means increasing cost: A higher cache level keeps more IA data on local disks, which consumes more local disk and TiKV resources. On TiDB Cloud Premium, a higher cache level increases the billed IA storage amount. On TiDB Cloud BYOC, the additional resources are provisioned in your own cloud account, are billed by your cloud provider, and take some time to provision. Balance cold-read performance against cost according to your business needs.

In short: IA storage reduces storage costs at the expense of less predictable query performance—this is an inherent design trade-off. Use partitioned tables to precisely define which data is cold and limit the impact to that data. If your business requires predictable query response times, keep latency-sensitive data in Standard storage.

Was this page helpful?