广告
返回顶部
首页 > 资讯 > 数据库 >MySQL query_cache_type的DEMAND参数介绍和使用举例
  • 514
分享到

MySQL query_cache_type的DEMAND参数介绍和使用举例

2024-04-02 19:04:59 514人浏览 独家记忆
摘要

Query Cache存储SELECT语句及其产生的数据结果,特别适用于表数据变化不是很频繁的场景,例如一些静态页面, 或者页面中的某块不经常发生 变化的信息。如果此表上有任何写表操

Query Cache存储SELECT语句及其产生的数据结果,特别适用于表数据变化不是很频繁的场景,例如一些静态页面,

或者页面中的某块不经常发生 变化的信息。如果此表上有任何写表操作发生,那么和这个表相关的所有缓存都将失效。

由于Query Cache需要缓存最新数据结果,因此表数据 发生任何变化(INSERT、UPDATE、DELETE或其他有可能产生

数据变化的操作),都会导致Query Cache被刷新。对于更新压力大的数据库来说,查询缓存的命中率也会非常低。

但我们可以将参数 query_cache_type 设置成 DEMAND(按需及用)方式,这样对于默认的sql语句不使用查询缓存,

而对于确定要使用query cache的SQL语句, 可以用sql_cache的方法指定,例如:

select sql_cache * from table_name; 

或 select sql_cache count(*) from table_name;



以下是query_cache_type三个参数的含义:


query_cache_type=0(OFF)关闭


query_cache_type=1(ON)缓存所有结果,除非select语句使用SQL_NO_CACHE禁用查询缓存


query_cache_type=2(DEMAND),只缓存select语句中通过SQL_CACHE指定需要缓存的查询


修改为DEMAND方式:

vi /etc/my.cnf,加入如下行:

query_cache_type =2


保存并重启Mysql


mysql5.7版本如果直接修改可能会报错:

mysql>set global query_cache_type=2;

ERROR 1651 (HY000): Query cache is disabled; restart the server with query_cache_type=1 to enable it



查看是否开启DEMAND参数:

mysql>show variables like '%query_cache%';

+------------------------------+---------+

| Variable_name                | Value   |

+------------------------------+---------+

| have_query_cache             | YES     |

| query_cache_limit            | 1048576 |

| query_cache_min_res_unit     | 4096    |

| query_cache_size             | 1048576 |

| query_cache_type             | DEMAND  |

| query_cache_wlock_invalidate | OFF     |

+------------------------------+---------+

6 rows in set (0.44 sec)



mysql>>show global  status like '%Qcache%';

+-------------------------+---------+

| Variable_name           | Value   |

+-------------------------+---------+

| Qcache_free_blocks      | 1       |

| Qcache_free_memory      | 1031832 |

| Qcache_hits             | 0       |

| Qcache_inserts          | 0       |

| Qcache_lowmem_prunes    | 0       |

| Qcache_not_cached       | 3       |

| Qcache_queries_in_cache | 0       |

| Qcache_total_blocks     | 1       |

+-------------------------+---------+

8 rows in set (0.14 sec)


相关参数解释如下:


Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,说明查询缓存中的内存碎片过多。


Qcache_free_memory:表示Query Cache中目前剩余的内存大小。


Qcache_hits:表示有多少次命中缓存。


Qcache_inserts: 表示多少次未命中缓存然后插入,意思是新来的SQL请求如果在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。


Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移出查询缓存。


Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。


Qcache_queries_in_cache:当前缓存中缓存的查询数量。


Qcache_total_blocks:当前缓存的block数量。


执行一次查询:

>select count(*) from test;

+----------+

| count(*) |

+----------+

|    36675 |

+----------+

1 row in set (0.41 sec)


然后执行show status like '%Qcache%',看看有什么变化:


mysql>show global  status like '%Qcache%';

+-------------------------+---------+

| Variable_name           | Value   |

+-------------------------+---------+

| Qcache_free_blocks      | 1       |

| Qcache_free_memory      | 1031832 |

| Qcache_hits             | 0       |

| Qcache_inserts          | 0       |

| Qcache_lowmem_prunes    | 0       |

| Qcache_not_cached       | 4       |

| Qcache_queries_in_cache | 0       |

| Qcache_total_blocks     | 1       |

+-------------------------+---------+

8 rows in set (0.01 sec)


Qcache_hits为0.



再次执行select count(*) from test;

mysql>select count(*) from test;

+----------+

| count(*) |

+----------+

|    36675 |

+----------+

1 row in set (0.02 sec)


mysql>show global  status like '%Qcache%';

+-------------------------+---------+

| Variable_name           | Value   |

+-------------------------+---------+

| Qcache_free_blocks      | 1       |

| Qcache_free_memory      | 1031832 |

| Qcache_hits             | 0       |

| Qcache_inserts          | 0       |

| Qcache_lowmem_prunes    | 0       |

| Qcache_not_cached       | 5       |

| Qcache_queries_in_cache | 0       |

| Qcache_total_blocks     | 1       |

+-------------------------+---------+

8 rows in set (0.00 sec)

Qcache_hits依旧为0,说明没有使用Query Cache.


加sql_cache执行一下语句,看看有什么变化:

mysql>select sql_cache count(*) from test;

+----------+

| count(*) |

+----------+

|    36675 |

+----------+

1 row in set, 1 warning (0.00 sec)


mysql>show global  status like '%Qcache%';

+-------------------------+---------+

| Variable_name           | Value   |

+-------------------------+---------+

| Qcache_free_blocks      | 1       |

| Qcache_free_memory      | 1030296 |

| Qcache_hits             | 1       |

| Qcache_inserts          | 1       |

| Qcache_lowmem_prunes    | 0       |

| Qcache_not_cached       | 5       |

| Qcache_queries_in_cache | 1       |

| Qcache_total_blocks     | 4       |

+-------------------------+---------+

8 rows in set (0.00 sec)


可以看到Qcache_hits的值变为了1,再次执行:


mysql>select sql_cache count(*) from test;

+----------+

| count(*) |

+----------+

|    36675 |

+----------+

1 row in set, 1 warning (0.00 sec)


mysql>show global  status like '%Qcache%';

+-------------------------+---------+

| Variable_name           | Value   |

+-------------------------+---------+

| Qcache_free_blocks      | 1       |

| Qcache_free_memory      | 1030296 |

| Qcache_hits             | 2       |

| Qcache_inserts          | 1       |

| Qcache_lowmem_prunes    | 0       |

| Qcache_not_cached       | 5       |

| Qcache_queries_in_cache | 1       |

| Qcache_total_blocks     | 4       |

+-------------------------+---------+

8 rows in set (0.01 sec)


可以看到Qcache_hits的值变为了2,每次执行都累加1,说明使用了query cache。


备注:从MySQL 8.0版本以后直接取消了查询缓存的整块功能。


您可能感兴趣的文档:

--结束END--

本文标题: MySQL query_cache_type的DEMAND参数介绍和使用举例

本文链接: https://www.lsjlt.com/news/47128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL query_cache_type的DEMAND参数介绍和使用举例
    Query Cache存储SELECT语句及其产生的数据结果,特别适用于表数据变化不是很频繁的场景,例如一些静态页面, 或者页面中的某块不经常发生 变化的信息。如果此表上有任何写表操...
    99+
    2022-10-18
  • MySQL中query_cache_type参数与使用的示例分析
    这篇文章主要为大家展示了“MySQL中query_cache_type参数与使用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中query_cache_type参数与使用的示...
    99+
    2023-06-20
  • C#中的out参数、ref参数和params可变参数用法介绍
    out参数: out关键字 通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字 简单来讲out可以用来返回多个参数类型。 static void Ma...
    99+
    2022-11-12
  • Mysql聚合函数的使用介绍
    目录前言什么是聚合函数SUM 函数countmax与minsumavg总结前言 聚合函数用来对表中的数据进行统计和计算。users表结构如下: 什么是聚合函数 聚合函数是用来做简单的数据统计的,比如说统计一下 &ldq...
    99+
    2022-10-14
  • MySQL数据库中DDL语句的介绍和使用
    这篇文章的知识点包括:DDL语句的简介、DDL语句的操作以及DDL语句的使用注意事项,阅读完整文相信大家对MySQL数据库中DDL语句有了一定的认识。1.Online DDL简介在MySQL的早期版本中,D...
    99+
    2022-10-18
  • Python函数介绍:compile函数的功能和使用示例
    Python函数介绍:compile函数的功能和使用示例在Python编程中,compile()函数是一个内置函数,它的作用是将字符串形式的Python代码编译为字节码或AST对象。编译之后,可以通过执行该字节码或AST对象来实现代码的运行...
    99+
    2023-11-04
    功能 Python函数 使用示例 compile函数
  • Python函数介绍:vars函数的功能和使用示例
    Python函数介绍:vars函数的功能和使用示例在Python编程中,vars()是一个非常有用的内置函数,它返回一个对象的属性和值的字典。这个函数可以用于获取一个对象的所有属性和对应的值,包括变量、函数、类以及模块等。vars()函数可...
    99+
    2023-11-04
    功能 vars函数 使用示例
  • Python函数介绍:any函数的功能和使用示例
    Python函数介绍:any函数的功能和使用示例概述:在Python中,any()是一个内置函数,它用于判断一个可迭代对象中的元素是否有至少有一个为真。如果迭代对象中的任何一个元素为真,则返回True;否则,返回False。使用语法:any...
    99+
    2023-11-04
    Python 函数 any
  • Python函数介绍:globals函数的功能和使用示例
    Python函数介绍:globals函数的功能和使用示例Python是一种功能强大的编程语言,提供了许多内置函数,其中globals()函数就是其中之一。本文将介绍globals()函数的功能和使用示例,并附带具体的代码示例。一、globa...
    99+
    2023-11-04
    Python函数 使用示例 globals函数
  • Python函数介绍:len函数的功能和使用示例
    Python函数介绍:len函数的功能和使用示例在Python编程中,len()是一个常用的内置函数,它用来返回传入对象的长度或元素个数。这个函数可以用于字符串、列表、元组、字典和集合等不同类型的数据结构。len()函数非常简单易用,本文将...
    99+
    2023-11-03
    Python 函数 len函数
  • Python函数介绍:locals函数的功能和使用示例
    Python函数介绍:locals函数的功能和使用示例Python是一种广泛应用于各个领域的编程语言,其强大的函数特性帮助程序员有效地组织和管理代码。在Python中,有许多内置的函数可以帮助我们更好地完成编程任务。其中一个非常有用的函数是...
    99+
    2023-11-03
    Python函数 使用示例 locals函数
  • Python函数介绍:print函数的功能和使用示例
    Python是一种流行的编程语言,旨在使计算机编程变得更加简单和易于理解。在Python中,用print函数向控制台输出文本是一个基本的任务。在本文中,我们将介绍Python的print函数,探索其功能和使用示例,并提供代码示例来帮助您更好...
    99+
    2023-11-03
    Python 函数 Print
  • Python函数介绍:range函数的功能和使用示例
    Python函数介绍:range函数的功能和使用示例Python是一种优美、易读、易写的面向对象编程语言,拥有丰富而强大的函数库。其中,range()函数是Python内置函数之一,常用于生成一系列数字,常用形式为:range(start,...
    99+
    2023-11-03
    range函数 功能示例
  • Python函数介绍:float函数的功能和使用示例
    Python函数介绍:float函数的功能和使用示例Python是一种广泛应用于多个领域的高级编程语言,它提供了丰富的内置函数,以便开发者能够更加方便地开发和处理数据。其中之一就是float函数,它用于将字符串或者数字转换为浮点数类型。在本...
    99+
    2023-11-03
    功能 使用示例 float函数
  • Flink cdc 介绍及使用 FlinkCDC读取mysql 及 jdbc 连接参数配置
    Flink cdc 介绍及使用 FlinkCDC读取mysql 及 jdbc 连接参数配置、官方案例 1. Flink cdc 介绍2. 常见cdc开源方案3. Flink cdc 使用案例3...
    99+
    2023-09-16
    mysql flink java 大数据
  • Python函数介绍:pow函数的作用和示例
    Python函数介绍:pow函数的作用和示例在Python编程语言中,pow函数是一个用于求幂运算的内置函数。它的主要作用是计算指定数值的指定次幂,并返回结果。pow函数具有灵活的用法,可以接受两个参数,也可以接受三个参数。下面将详细介绍p...
    99+
    2023-11-04
    作用 示例 pow函数
  • Python函数介绍:filter函数的作用和示例
    Python函数介绍:filter函数的作用和示例Python是一种功能强大的编程语言,提供了许多内置的函数,其中之一就是filter函数。filter函数用于过滤列表中的元素,并返回满足指定条件的元素组成的新列表。在本文中,我们将介绍fi...
    99+
    2023-11-04
    示例 Python函数 filter函数
  • Python函数介绍:ord函数的用法和示例
    Python函数介绍:ord函数的用法和示例Python作为一种高级编程语言,提供了许多内置的函数,其中之一就是ord函数。ord函数常用于获取字符的ASCII码值。在本篇文章中,我们将学习ord函数的用法并给出实际的代码示例。ord函数的...
    99+
    2023-11-04
    用法 示例 ord函数
  • Python函数介绍:divmod函数的用法和示例
    Python函数介绍:divmod函数的用法和示例在Python中,divmod() 函数用于求两个数的整数商和余数。这个函数接受两个参数,被除数和除数,并返回一个包含整数商和余数的元组。divmod(x, y) 返回的结果是一个包含两个元...
    99+
    2023-11-04
    Python 函数 关键词提取:
  • Python函数介绍:all函数的作用和示例
    Python函数介绍:all函数的作用和示例Python是一种功能强大的编程语言,拥有许多内置函数,其中一个非常实用的函数是all()。在本篇文章中,我将介绍all函数的作用,并提供详细的代码示例。all()函数是一个用于判断可迭代对象中的...
    99+
    2023-11-04
    作用 示例 all函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作