Grand Vitess: release 10 improves performance and compatibility

database

Vitess 10 is being rolled out by the Vitess project team, with compatibility being the major focus. However, this release also brings benchmarking and optimisation improvements intended to highlight which areas of Vitess can be made better in terms of performance.

Vitess is an open source database clustering system that implements sharding capabilities for scaling out of MySQL. As such, compatibility is considered one of the most important facets of the software, so that a deployment using Vitess should function as a drop-in replacement for MySQL.

In a posting on the CNCF blog, Vitess maintainer Alkin Tezuysal says the team has made a push to create automated tests running a popular database framework, which allowed them to find and fix several issues that would have stopped most users from being able to use Vitess with this framework.

“With the release of V10.0, we can proudly say that Vitess (unsharded) passes all automated end-to-end tests of the Ruby on Rails framework,” Tezuysal said

The Vitess team intends to add more tests for more frameworks, which should flush out any discrepancies between MySQL and Vitess that need to be addressed to ensure Vitess can be used as a database wherever MySQL can.

Other improvements include Freno-style throttling added to VReplication workflows when migrating data from an existing system into Vitess. Both source and target can be throttled based on replication lag of the corresponding shards, according to the Vitess team. New commands Mount and Migrate also let users import data from another Vitess cluster.

Vitess 10 also features improved SQL syntax, and Revertible Online DDL offering a lossless, online revert capability for completed migrations. Under declarative schema changes, Vitess automatically decides whether the existing schema matches the required schema, or works towards matching it.

Performance optimisations in this release of Vitess include a new cache implementation for query plans. This uses a least frequently used eviction algorithm to make it more resilient against pollution, so it behaves better in cases such as bulk inserts into an active database, while having faster response times and better hit rates during normal operation.

The performance of the Vitess SQL Parser has been greatly improved, both in parsing speed and in reduction of memory allocations. This will result in less CPU usage for vtgate instances, faster query times and less GC churn, according to the Vitess team. Similarly, many of the AST operations that Vitess performs on SQL syntax trees have been redesigned so they do not allocate memory unless strictly necessary, which should lead to a noticeable decrease in memory usage for vtgate processes.

Vitess 10 also introduces an experimental multi-cluster admin API and web UI, called VTAdmin. This is currently a preview only, and the Vitess team said it welcomes feedback from testers. VTAdmin relies on the new VtctldServer API, so users must be running the new grpc-vtctld service on their vtctlds in order to use it. Full details on Vitess 10 are available in the CNCF blog and the release notes.