Reasons why MySQL cancelled Query Cache

Reasons why MySQL cancelled Query Cache

MySQL previously had a query cache, Query Cache. Starting from 8.0, this query cache is no longer used. So what is the reason for abandoning it? This article will introduce it to you.

MySQL query cache is a cache of query results. It compares queries starting with SEL to the hash table and, if there is a match, returns the result of the previous query. When matching, the query must be matched byte by byte. For example, SELECT * FROM t1; is not equal to select * from t1;. In addition, some uncertain query results cannot be cached, and any modification to the table will invalidate all caches of these tables. Therefore, the best scenario for query caching is read-only, especially complex queries that need to examine millions of rows and return only a few. If your query meets such a characteristic, enabling query cache will improve your query performance.

As technology progressed and time went by, the MySQL engineering team found that there were not many benefits to enabling caching.

First, the effect of query cache depends on the cache hit rate. Only queries that hit the cache can be improved, so its performance cannot be predicted.

Second, another big problem with the query cache is that it is protected by a single mutex. On a server with many cores, a large number of queries can result in a lot of mutex contention.

Benchmarking has found that most workloads are best served by disabling the query cache (the default for 5.6): query_cache_type = 0

If you think you would benefit from query caching, test it accordingly.

  • The more data you write, the less benefit you get
  • The more data you hold in the buffer pool, the less benefit you get.
  • The more complex the query, the larger the scan range, the greater the benefit

Another reason why MySQL 8.0 cancels query cache is that research shows that the closer the cache is to the client, the greater the benefit. For more information about this study, please refer to https://proxysql.com/blog/scaling-with-proxysql-query-cache/

The following image is from the URL above:

In addition, MySQL 8.0 has added new tools for performance intervention. For example, you can now use the query rewrite plug-in to insert optimizer hint statements without changing the application. Alternatively, there are third-party tools like ProxySQL that can act as an intermediate cache.

For the above reasons, MySQL 8.0 no longer supports query caching. If you upgrade from 5.7 to 8.0, consider using query rewrite or other caches.

The full text is over.

The above are the details of why MySQL canceled Query Cache. For more information about MySQL Query Cache, please pay attention to other related articles on 123WORDPRESS.COM!

You may also be interested in:
  • MySQL Query Cache Graphical Explanation
  • MySQL optimization query_cache_limit parameter description
  • MySQL cache startup method and parameter details (query_cache_size)
  • Misunderstandings about MySQL query_cache
  • Analysis of MySQL Query Cache Principle
  • MySQL query_cache_type parameter and usage details

<<:  Web interview Vue custom components and calling methods

>>:  WeChat applet realizes linkage menu

Recommend

JavaScript css3 to implement simple video barrage function

This article attempts to write a demo to simulate...

How to solve the problem of MySQL query character set mismatch

Find the problem I recently encountered a problem...

CSS3 achieves cool sliced ​​image carousel effect

Today we will learn how to use CSS to create a co...

The difference between Div and table in HTML (discussed in detail in all aspects)

1: Differences in speed and loading methods The di...

MySQL 8.0 New Features - Introduction to Check Constraints

Table of contents Preface Check Constraints Creat...

How to correctly modify the ROOT password in MySql8.0 and above versions

Deployment environment: Installation version red ...

JS cross-domain XML--with AS URLLoader

Recently, I received a requirement for function ex...

Several scenarios for using the Nginx Rewrite module

Application scenario 1: Domain name-based redirec...

Process parsing of reserved word instructions in Dockerfile

Table of contents 1. What is Dockerfile? 2. Analy...

Why node.js is not suitable for large projects

Table of contents Preface 1. Application componen...

Talking about the practical application of html mailto (email)

As we all know, mailto is a very practical HTML ta...

Detailed explanation of Vue3's responsive principle

Table of contents Review of Vue2 responsive princ...