This Month in TiKV - February 2020

TiKV Authors

March 12, 2020

As the cold winter has passed, we are welcoming a beautiful spring with blossoms, gentle breeze, and of course our monthly TiKV update, covering February 2020.

Let’s get started!


This month our team made 2 TiKV releases!

You can review the changelogs here:

  • 3.0.10
    • bug fixes
  • 4.0.0-beta.1
    • bug fixes
    • compatibility improvements
    • new features including supporting fetching configuration items from the status port via HTTP API in #6480 and optimizing the performance of Chunk Encoder in Coprocessor in #6341

Reading materials

For raft-based implementations like TiKV, stale read may happen due to a brain split in the Raft group. @siddontang wrote How TiKV Uses “Lease Read” to Guarantee High Performances, Strong Consistency and Linearizability to share with you several approaches to this problem and why TiKV chooses Lease Read.

As a long-time Rust programmer, @nrc wrote Early Impressions of Go from a Rust Programmer, talking about his early impressions of Go.

@c4pt0r published Doubling System Read Throughput with Only 26 Lines of Code where he introduced Follower Read, a new feature that TiDB and TiKV have.

@TennyZhuang together with Fullstop000, haoxiang47 and @hicqu wrote the article How We Reduced Multi-region Read Latency and Network Traffic by 50%, introducing their project of optimizing multi-region network bandwidth and read latency in TiKV server at TiDB Hackathon 2019.

Notable PRs

  • @BusyJay upgraded thread pool to support yield in #6487, making tasks handled more fairly.

  • @kennytm added backup data support to S3 storage on 3.1 version in #6536.

  • @BusyJay introduced pre-transfer leader to make raft leadership transfer more smoothly in #6539.

  • @5kbpers added command observer to observe executed command in the apply thread pool in #6602. This is in preparation for CDC (capture data changes).

  • @sticnarf used the unified thread pool in #6593 to handle point get requests and coprocessor requests.

  • @nolouch verified online reload new TLS certificate in #2162.

  • @Luffbee introduced a solution-based balance solver in #2141.

  • @iosmanthus upgraded DAG framework in #5871, making TiKV never fallback to the volcano model mode.

  • @TennyZhuang supported new index encoding with collation support in #6685.

  • @youjiali1995 made it possible to return values with successful pessimistic lock responses to reduce network traffic in #6696.

Notable issues

Help wanted issues (mentoring available)

@yiwu-arbug suggested setting write_global_seqno=false for file ingestion in #6501 and he opened the issue #6502, requesting to evaluate dictionary compression for RocksDB.

Call for participation

@overvenus opened issue #6734, requesting to update PD member information every 10 minutes in order to minimize the time window of holding stale information.

@hicqu suggested in #6666 to remove shared_block_cache from engine_trait::KvEngines to simplify KvEngine::flush_metrics and he clarified 2 reasons for this suggestion. We have seen one vote up. What’s your opinion?

@yiwu-arbug and @Little-Wallace created #6506, #6507, and #6508 to ask if students would be interested in participating in GSoC by working on these projects. Follow these issues if you are interested.

New Contributors

We’d like to welcome the following new contributors to TiKV and thank them for their work!

If you’d like to get involved, we’d love to invite you to participate in the TiDB Challenge Program and you might be interested in starting from some easy tasks at the TiKV project. If you don’t know how to begin, please leave a comment and somebody will help you out. We’re also very keen for people to contribute to documentation, tests, optimizations, benchmarks, refactoring, or other useful things.

This Week in TiDB

For more detailed and comprehensive information about TiDB and TiKV, we have weekly updates. The following cover February.