Skip to content

Introduce PageStorage V3 to reduce CPU usage and write amplification #3594

@JaySon-Huang

Description

@JaySon-Huang

Feature Request

Teachability, Documentation, Adoption, Migration Strategy:
To reduce CPU usage and write amplification, we file a proposal for new version of PageStorage: Proposal: PageStorage V3 Design
This issue records the progress of PageStorage V3 development.

Development progress

  • some preparations and refactoration
  • The framework and related data structure for PageStorage V3
  • BlobStore
  • MVCC PageDirectory
    • Basic apply edits, get PageEntry
    • GC for cleaning up removed Page
    • GC with BlobStore data movement
    • GCApply needs to scan all living page ids with a read lock, which could cause high write blocking time. Find a better way for removing external pages; fixed in PageStorage: Ref page lifetime mechanism #4174
    • Stale snapshots detection
      • Record the thread id, created time while creating a snapshot
      • Log warnings when there exist long time snapshot
      • Optimization when stale snapshot(s) exist (MVCC GC, BlobStore GC)
  • WALLog
    • LogFile format
    • Meta format for persisting the PageEntry applied to MVCC PageDirectory
    • Compaction of LogFiles
    • Multi-disks rolling
  • Benchmark vs V2
  • Compatibility with other features
    • Respect WriteLimiter && ReadLimiter
    • Respect Encryption at rest
  • Global PageStorage for one TiFlash instance
    • Cleanup data in global PageStorage instance when dropping table
  • Further improvement/features
    • Tools for debugging PageStorage (page_ctl)
    • Transfering data from old storage to V3
    • Check whether use list instead of set for FilenameSet is better PageStorage: WALStore #3891 (comment)
    • Split the pipeline of persisting write batch into smaller parts and speed up the throughput for WALStore
    • Compression on serialized entries (in WAL)

Split PRs

Metadata

Metadata

Labels

type/feature-requestCategorizes issue or PR as related to a new feature.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions