What’s new in Vitess 10?

Published 14.07.2021

Categories Changelog

Tags CNCF, Vitess

Vitess 10 is released with many excellent features and also many bug fixes that were bothering the user base. We are going to see all the features and exciting announcements.

So, Let’s roll!

Major Themes in Vitess

In this release, we can see that Vitess Maintainers have continued to focus on compatibility. It is the most critical component of Vitess, being part of the MySQL ecosystem. We have seen the start of work on benchmarking and various performance optimizations. The whole improvements have given us a clear vision of the progress in terms of performance.

Compatibility (MySQL, frameworks)

For over a year, the developers started having a tough time ensuring that Vitess can be a drop-in replacement for MySQL. They have done work on every level of Vitess – from what the TCP packets look like to parsing and query planning.

In this release, we can see the creation of automated tests running a popular database framework. During testing, the devs have found and fixed various issues that would have stopped most users from using Vitess with this framework. With this release of V10.0, we can witness that Vitess (unsharded)  passes all automated end-to-end tests of the Ruby on Rails framework. Now, even if we don’t use Rails, the improvements might still benefit us. We can also see a significant overlap between frameworks regarding the type of queries issued and their expectations on results coming back.

Migration

The new release comes with the addition of freno-style throttling to VReplication workflows. Both source and target tablets can now be throttled based on the replication lag of the corresponding shards.

We can now import data from another Vitess cluster through New commands Mount and Migrate. The release also includes Improved different metrics, various bug fixes and fine-tuning of the VReplication V2  user commands.

Schema Management

The schema management is now more improved. We will take a look at the significant changes.

Improved SQL syntax

Several SQL syntaxes got improvement. Few are listed below:

SHOW VITESS_MIGRATIONS
SHOW VITESS MIGRATIONS LIKE '<uuid>'
SHOW VITESS MIGRATIONS LIKE ‘<migration-context>’
SHOW VITESS MIGRATIONS LIKE '<state>'
ALTER VITESS_MIGRATION ‘<uuid>’ CANCEL
ALTER VITESS_MIGRATION' <uuid>' RETRY
REVERT VITESS_MIGRATION ‘<uuid>’

For further information on this subject, you can always consult here.

Introduction of VReplication-based migrations via ddl_strategy=’online.’

VReplication acts as the underlying mechanism behind resharding, materialed news, MoveTables, and more. In this new release, it is now capable of running schema migrations. We can learn more about it here.

Revertible Online DDL: lossless, online reverting for completed migrations

We can see support via REVERT VITESS_MIGRATION ‘<uuid>’ statement. Again, the support is visible for CREATE TABLE statements in all online DDL strategies (reverting a CREATE TABLE hides away the table). The new release also supports DROP TABLE statements in all online DDL strategies (reverting a DROP TABLE reinstates the table with all data). Also, keeping for ALTER TABLE in online (VReplication) strategy is new. After migration completion, reverting of an ALTER TABLE is lossless and retains changes made to the table. The operation is rapid and only requires catching up on the binlog events since migration completion. Learn more by clicking here.

Declarative schema changes

Declarative schema changes happen with the ddl_strategy=’online|gh-ost|pt-osc -declarative’. We now see for each table the supply of CREATE TABLE or DROP TABLE statement but never ALTER TABLE statement. Also, now Vitess can automatically decide whether the existing schema matches the required schema or works towards matching it. Declarative schema changes are now idempotent. We can see more here.

Performance Optimizations

The new release of Vitess 10 has had a particular focus on performance optimization. Some highlights include the addition of a new and more performant Cache Implementation for query plans. The new cache uses an LFU eviction algorithm to make it more resilient against pollution. It behaves amazingly better in pathological cases (such as bulk inserts into an active database) while having faster response times and better hit rates during regular operation.

Also, the Vitess SQL Parser performance has been dramatically improved, both in parsing speed and in reducing memory allocations. The improvement will result in less CPU usage for vtgate instances, faster query times and less GC churn. Third party applications that depend on Vitess’ parser will also receive these benefits if they upgrade to the newest version where the external API remains primarily unchanged.

Several AST operations that Vitess performs on SQL syntax trees have been redesigned not to allocate memory unless strictly necessary. It will significantly decrease memory usage for vtgate processes, particularly in busy Vitess clusters. We can see most of the improvements in CPU and memory usage of vtgate.

User Interface

With the new release, Vitess 10.0 introduces an experimental multi-cluster admin API and web UI called VTAdmin. Deployment of the vtadmin-api and vtadmin-web components is entirely opt-in.

Benchmarking

To ensure with the new release that Vitess delivers high performance to its users, we can see the improvement of benchmarking and performance monitoring techniques ever since Vitess 9.0. The release of Vitess 10.0 underwent significant improvements, including the support for Vitess’s microbenchmarks.

We can also see enhanced configurability & reproducibility of benchmarks. The profiling of Vitess and the recording of Vitess and MySQL metrics also significantly improved this update.

Conclusion

Vitess 10.0 is out now, and check it out by downloading here.

More Posts:

Join 100+ cloud native enthusiasts

and stay in the loop on modern software development.

Sign up to receive exclusive content around cloud native software development right into your inbox.

We don’t spam! Read our privacy policy for more info.

More stories from our blog

How To Install Docker on Ubuntu 20.04?

How To Install Docker on Ubuntu 20.04?

Docker is an open-source tool that makes managing application processes in containers much easier. Containers allow you to run your programmes in separate processes with their own resources. Containers are comparable to virtual machines, except they're more portable,...

Answer to Everything isn’t 42, it’s Family

Answer to Everything isn’t 42, it’s Family

We’re experiencing digitisation. An era where every person has a voice, and it doesn’t matter if he’s wise. There’s more motivation circulating the vast stretches of the internet than it’s required. This would be good in a theoretical world, but if you seek the truth,...

What’s new in Gitlab 14? 🦊

What’s new in Gitlab 14? 🦊

GitLab 14 is out and fans must be thrilled to know about all the new features along with all the fixes and removals. In this post, we will go through the many changes and improvements, bug fixes, and some remarkable deprecations. We will see all of that here. So,...

k8s vs k3s: The Comprehensive Difference

k8s vs k3s: The Comprehensive Difference

Kubernetes is undoubtedly a champion in the container orchestration world. But currently, we see that K3s or a lightweight Kubernetes distribution which is light, efficient and fast with a drastically small footprint levelling up. Businesses nowadays scratch their...

What’s new in Fluentbit v1.8.1?

What’s new in Fluentbit v1.8.1?

Fluentbit is a lightweight and fast data processor and forwarder for Linux, BSD and OSX. And, for Fluentbit fans, there is good news as they have released their new update with lots of new features and fixes. We will have a look at all of them below. New Metrics...

What’s new in Envoy v1.19.0?

What’s new in Envoy v1.19.0?

Envoyproxy introduced its new version, 1.19.0, recently, and it came with many changes and improvements from the previous ones. We can see more stability in this version, along with specific bug fixes. So, without waiting any further, let’s see what the new version...

What’s new in Contour 1.17.0?

What’s new in Contour 1.17.0?

Contour 1.17.0 is out with a layer seven HTTP reverse proxy for Kubernetes clusters. The new version has arrived with many new features and several fixes, which will make the functioning of the ingress controller smoother. More activities within the community came...

What’s new in Prometheus 2.28?

What’s new in Prometheus 2.28?

Prometheus 2.28 is out. If you don't know, Prometheus is an excellent open-source system monitoring and alerting toolkit. Let's have a look at those features and have a look at the changelog. Displaying Trace Examplers in the Graphic Interface From the previous...

GPT-J: GPT-3 Democratized

GPT-J: GPT-3 Democratized

GPT-J is the open source cousin of GPT-3 that everyone can use. The open source transformer is all about democratizing transformers and with 6b parameters it’s the largest transformer available. Read more here

What’s new in Portainer CE 2.6.0?

What’s new in Portainer CE 2.6.0?

Portainer fans will be very excited because a new version came out recently. We are going to see the changes that came in this release and also going to explore the features. We will also see the issues and bugs that got fixed to maintain stability and improve user...

Interested in what we do? Looking for help? Wanna talk about software strategy?