- query_cache_limit:允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache
- query_cache_min_res_unit:设置 Query Cache 中每次分配内存的最小空间大小,也就是每个 Query 的 Cache 最小占用的内存空间大小
- query_cache_size:设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数
- query_cache_type:控制 Query Cache 功能的开关,可以设置为0(OFF),1(ON)和2(DEMAND)三种,意义分别如下:
- 0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache
- 1(ON):开启 Query Cache 功能,但是当 SELECT 语句中使用的 SQL_NO_CACHE 提示后,将不使用Query Cache
- 2(DEMAND):开启 Query Cache 功能,但是只有当 SELECT 语句中使用了 SQL_CACHE 提示后,才使用 Query Cache
- query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。
Query Cache 如何处理子查询的?
这是我遇到的最为常见的一个问题。其实 Query Cache 是以客户端请求提交的 Query 为对象来处理的,只要客户端请求的是一个 Query,无论这个 Query 是一个简单的单表查询还是多表 Join,亦或者是带有子查询的复杂 SQL,都被当作成一个 Query,不会被分拆成多个 Query 来进行 Cache。所以,存在子查询的复杂 Query 也只会产生一个Cache对象,子查询不会产生单独的Cache内容。UNION[ALL] 类型的语句也同样如此。
Query Cache 是以 block 的方式存储的数据块吗?
不是,Query Cache 中缓存的内容仅仅只包含该 Query 所需要的结果数据,是结果集。当然,并不仅仅只是结果数据,还包含与该结果相关的其他信息,比如产生该 Cache 的客户端连接的字符集,数据的字符集,客户端连接的 Default Database等。
Query Cache 为什么效率会非常高,即使所有数据都可以 Cache 进内存的情况下,有些时候也不如使用 Query Cache 的效率高?
Query Cache 的查找,是在 MySQL 接受到客户端请求后在对 Query 进行权限验证之后,SQL 解析之前。也就是说,当 MySQL 接受到客户端的SQL后,仅仅只需要对其进行相应的权限验证后就会通过 Query Cache 来查找结果,甚至都不需要经过 Optimizer 模块进行执行计划的分析优化,更不许要发生任何存储引擎的交互,减少了大量的磁盘 IO 和 CPU 运算,所以效率非常高。
客户端提交的 SQL 语句大小写对 Query Cache 有影响吗?
有,由于 Query Cache 在内存中是以 HASH 结构来进行映射,HASH 算法基础就是组成 SQL 语句的字符,所以必须要整个 SQL 语句在字符级别完全一致,才能在 Query Cache 中命中,即使多一个空格也不行。
一个 SQL 语句在 Query Cache 中的内容,在什么情况下会失效?
为了保证 Query Cache 中的内容与是实际数据绝对一致,当表中的数据有任何变化,包括新增,修改,删除等,都会使所有引用到该表的 SQL 的 Query Cache 失效。
为什么我的系统在开启了 Query Cache 之后整体性能反而下降了?
当开启了 Query Cache 之后,尤其是当我们的 query_cache_type 参数设置为 1 以后,MySQL 会对每个 SELECT 语句都进行 Query Cache 查找,查找操作虽然比较简单,但仍然也是要消耗一些 CPU 运算资源的。而由于 Query Cache 的失效机制的特性,可能由于表上的数据变化比较频繁,大量的 Query Cache 频繁的被失效,所以 Query Cache 的命中率就可能比较低下。所以有些场景下,Query Cache 不仅不能提高效率,反而可能造成负面影响。
如何确认一个系统的 Query Cache 的运行是否健康,命中率如何,设置量是否足够?
MySQL 提供了一系列的 Global Status 来记录 Query Cache 的当前状态,具体如下:
- Qcache_free_blocks:目前还处于空闲状态的 Query Cache 中内存 Block 数目
- Qcache_free_memory:目前还处于空闲状态的 Query Cache 内存总量
- Qcache_hits:Query Cache 命中次数
- Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次数,也就是没有命中的次数
- Qcache_lowmem_prunes:当 Query Cache 内存容量不够,需要从中删除老的 Query Cache 以给新的 Cache 对象使用的次数
- Qcache_not_cached:没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于 query_cache_type 设置的不会被 Cache 的 SQL
- Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 数量
- Qcache_total_blocks:Query Cache 中总的 Block 数量
可以根据这几个状态计算出 Cache 命中率,计算出 Query Cache 大小设置是否足够,总的来说,我个人不建议将 Query Cache 的大小设置超过256MB,这也是业界比较常用的做法。
MySQL Cluster 是否可以使用 Query Cache?
其实在我们的生产环境中也没有使用 MySQL Cluster,所以我也没有在 MySQL Cluster 环境中使用 Query Cache 的实际经验,只是 MySQL 文档中说明确实可以在 MySQL Cluster 中使用 Query Cache。从 MySQL Cluster 的原理来分析,也觉得应该可以使用,毕竟 SQL 节点和数据节点比较独立,各司其职,只是 Cache 的失效机制会要稍微复杂一点。
相关推荐
mysq5.0l安装文件,mysql-gui-tools-5.0-r2-win32.msi。小巧玲珑在东西。
mysql的可视化管理软件
最好的mysq第三方工具-----安装程序文件(需要注册机)
MySQL 安装图解 MySQL 安装图解是指通过图形化界面来安装 MySQL 数据库的过程。本文将详细介绍 MySQL 安装图解的每个步骤,帮助读者快速了解 MySQL 安装过程。 一、下载和解压 MySQL 安装文件 ...
SQL(Structured Query Language)是用于管理和操作数据库的语言。在MySQL中,SQL语句主要包括以下几类: 1. DDL(Data Definition Language):用于创建和修改数据库结构,如CREATE DATABASE、CREATE TABLE、ALTER ...
关于mysql的数据类型的内容,主要是了解mysql的基本数据类型,便于以后的学习
标题"mysq连接客户端"暗示了我们将讨论的是一个用于连接MySQL服务器的图形化用户界面(GUI)工具。这样的客户端软件允许用户通过鼠标点击和图形界面来执行SQL查询,创建、编辑和管理数据库,以及执行其他常见的...
MySQL 数据同步是指在一个数据库(主库)上的数据更改能够实时或定时地反映到另一个数据库(从库)上,以实现数据的一致性和可用性。在 MySQL 中,这通常通过二进制日志(Binary Log)和复制(Replication)机制来...
在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从Oracle迁移到MySQL。Oracle是一种成熟的商业关系型数据库管理系统,而MySQL则是一个广泛使用的开源数据库,它们各有优势,适用于不同...
标题中的“Vs2019 mysq的插件”指的是Visual Studio 2019中用于支持MySQL数据库的扩展插件。这个插件允许开发者在使用Visual Studio进行开发时,可以直接与MySQL数据库进行交互,无需借助其他工具。描述中提到的...
一段实现php与mysql 连接的代码,其中还包含一段实现循环输出的代码,读者可以参考此代码,实现更多自己想实现的功能
mysq 优化方案+优化策略mysq 优化方案+优化策略mysq 优化方案+优化策略mysq 优化方案+优化策略mysq 优化方案+优化策略mysq 优化方案+优化策略mysq 优化方案+优化策略
在Linux环境中,MySQL数据库系统是广泛使用的开源关系型数据库管理系统,尤其在服务器端应用中扮演着重要角色。这里我们讨论的是基于deb包管理系统的Linux发行版(如Ubuntu)上安装MySQL 5.7.24的全套过程。...
mysq常用函数字符串处理函数日期和时间函数常用的数值函数 CEIL(x)返回大于X的最大整数
本书《PHP&MySQL Web数据库应用开发指南(第二版)》是一本面向希望掌握PHP和MySQL进行Web数据库应用开发的读者的书籍。... 首先,书中强调了动态网站的重要性,诸如在线购物、个性化页面构建以及数据库信息管理等功能...
Asp.Net For MySql数据源连接驱动程序5.2版, no Installer版,dll文件,无需要安装,拷贝至bin目录下后与SqlClient的用法完全相同
标题中的“mysq.rar_mysq_php mysq_php 学生管理_php 学生管理 系统_php+mysq”表明这是一个与MySQL数据库和PHP编程相关的压缩文件,主要用于构建一个学生管理系统。在这个系统中,PHP作为服务器端脚本语言与MySQL...
另外,还可以使用 `mysql_query("SET CHARACTER SET UTF8")` 和 `mysql_query("SET CHARACTER_SET_RESULTS=UTF8'")` 来确保结果集的字符集正确。 3. **配置文件修改** 对于服务器级别的字符集设置,可以在 `my.ini...
mysqlbinlog的flashback
【标题】"mysq.rar_php+mysq"指的是一个关于MySQL数据库与PHP编程结合使用的学习资源包。这个压缩文件可能是为了帮助开发者或者学习者更好地理解如何在PHP项目中集成和操作MySQL数据库。"mysq"通常指的是MySQL,而...