MySQL 8.0 移除 Query Cache 查询缓存

dff0b73680ae71a82445569b8cbed0a2.png

什么是 Query Cache ?

对于缓存,一般人想到的是 Redis、Memcache 这些内存型的缓存。但是实际上 MySQL 5.5-5.7 版本也提供了 Query Cache 查询缓存,可以把我们查询过的语句缓存下来,下一次查询的时候有可能就直接从缓存返回(缓存命中)。这里引用下文档介绍:

stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again

Query Cache 缺点

当然使用 Query Cache 缓存也不是没有坏处,多了个管理缓存的任务,需要写入缓存,然后如果判断里面的缓存已经过期,又要从里面删除缓存。

随着技术的进步,经过时间的考验,MySQL 工程团队发现启用 Query Cache 查询缓存的好处并不多。

首先,查询缓存的效果取决于缓存的命中率,只有命中缓存的查询效果才能有改善,因此无法预测其性能。

其次,查询缓存的另一个大问题是它受到单个互斥锁的保护。在具有多个内核的服务器上,大量查询会导致大量的互斥锁争用。

通过基准测试发现,大多数工作负载最好(5.6的默认设置):query_cache_type = 0

9d10daf16fd4054adb69beb82f8aa410.png

如果你认为会从 MySQL 数据库 Query Cache 查询缓存中获得好处,请按照实际情况进行测试。

  1. 1. 数据写的越多,好处越少;

  2. 2. 缓冲池中容纳的数据越多,好处越少;

  3. 3. 查询越复杂,扫描范围越大,则越受益。

Query Cache 被弃用

MySQL 8.0 不在支持 Query Cache 查询缓存,因此 Query Cache 相关的参数也被移除:

  1. 1. query_cache_type

  2. 2. query_cache_size

尽管 MySQL Query Cache 查询缓存旨在提高性能,但它存在严重的可扩展性问题,并且很容易成为严重的瓶颈。通过研究,缓存越靠近客户端,获得的好处越大。a60372a0a9935398b544676cb9e07608.png

所以,你如果已经开始使用 MySQL 8.0,那么应该考虑的是根据网站实际情况进行优化加速。可以着重于内存缓存、浏览器等更加靠近用户端的缓存。

MySQL 8.0 中的参数优化可以通过调整一些重要的配置参数来提高数据库的性能。以下是一些常见的参数优化建议: 1. 缓冲池参数 (InnoDB Buffer Pool Size):通过增加 innodb_buffer_pool_size 参数的值,可以增加 InnoDB 存储引擎使用的缓冲池大小,提高读取数据的速度。 2. 查询缓存 (Query Cache):MySQL 8.0 已经移除查询缓存功能,因此不再需要设置相关参数。如果你的应用程序需要使用查询缓存功能,可以考虑使用其他方式来实现,例如使用 Redis 或 Memcached。 3. 并发连接数 (Max Connections):根据你的应用程序负载情况,合理设置 max_connections 参数,以限制并发连接数。过多的连接数可能会导致性能下降。 4. 线程缓存 (Thread Cache):适当调整 thread_cache_size 参数的值,以避免频繁创建和销毁线程。较大的值可以提高性能,但过大可能会占用过多内存。 5. 查询优化器 (Query Optimizer):通过分析和优化查询语句,使用正确的索引、适当的 JOIN 操作等,可以提高查询性能。了解如何正确使用索引,并使用 EXPLAIN 命令来查看查询执行计划。 6. 日志文件 (Log Files):适当配置日志文件大小和数量,以便适应你的应用程序需求。过大的日志文件可能会导致写入性能下降。 7. 内存配置 (Memory Configuration):合理配置 innodb_log_file_size 和 innodb_log_buffer_size 参数,以及其他相关的内存配置参数,以便优化事务日志的性能。 请注意,以上只是一些常见的参数优化建议,实际的优化策略还需要根据你的具体应用程序和数据库负载情况进行调整。建议在进行任何配置更改之前,先进行备份并进行适当的测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值