MySQL缓存研究

缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果

缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存值的相关条目被清空。更改指的是表中任何数据或是结构的改变,包括INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询。显然,这对于频繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能。

MySQL 检查缓存命中的规则

1、在检查缓存的时候,MySQL 不会对语句进行解析、正则化或者参数化,它精确地使用客户端传来的查询语句和其他数据。只要字符大小写、空格或者注释有一点点不同,查询缓存就认为这是一个不同的查询

2、查询缓存不会存储有不确定结果的查询。因此,,任何一个包含不确定函数(比如NOW()或CURRENT_DATE())的查询不会被缓存。同样地,CURRENT_USER()或CONNECTION_ID()这些由不同用户执行,将会产生不同的结果的查询也不会被缓存。事实上,查询缓存不会缓存引用了用户自定义函数、存储函数、用户自定义变量、临时表、mysql %ignore_a_1%中的表或者任何一个有列级权限的表的查询

3、查询必须是完全相同的(逐字节相同)才能够被认为是相同的。另外,同样的查询字符串由于其它原因可能认为是不同的。使用不同的数据库、不同的协议版本或者不同 默认字符集的查询被认为是不同的查询并且分别进行缓存。

开启查询缓存的开销

  读取查询在开始之前必须要检查缓存。

  如果查询是可以被缓存的,但是不在缓存中,那么在产生结果之后进行保存会带来一些额外的开销。写入数据的查询也会有额外的开销,因为它必须使缓存中相关的数据表失效。

这些开销相对来说较小,所以查询缓存还是很有好处的。但是,稍后你会看到,额外的开销有可能也会增加。从缓存中受益最多的查询可能是需要很多资源来产生结果,但是不需要很多空间来保存的类型。所以用于存储、返回和失效的代价都较小。聚集查询,比如从大表中利用COUNT()产生较小的结果,就符合这个范畴。

分析和调整查询缓存的一个图示(网上找到的)

MySQL缓存研究

 

Msyql缓存状态的查看

MySQL缓存研究

have_query_cache 的值如果是yes表示开启缓存

Binlog_cache_size:默认大小是32768即32K

Max_binlog_cache_size: 默认值是18446744073709547520,这个值很大,够我们使用的了。此参数和binlog_cache_size相对应,代表binlog所能使用的cache最大使用大小。如果系统中事务过多,而此参数值设置有小,则会报错。

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)三种,意义分别如下:

医学实验研究中心HTML5网站模板 医学实验研究中心HTML5网站模板

医学实验研究中心HTML5网站模板是一款适合提供各种优质实验研究服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

医学实验研究中心HTML5网站模板 24 查看详情 医学实验研究中心HTML5网站模板

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。

检查查询缓存使用情况

MySQL缓存研究

此时的查询缓存命中率:175/(175+4)=97%;由于个人的测试数据库,查询较少,更行更少,命中率颇高。嘿嘿~~

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数量

清空缓存

之前的Qcache_hits  Qcache_inserts均被清空

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/855194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 20:00:21
下一篇 2025年11月27日 20:17:03

相关推荐

  • Oracle DATE 类型存储时间戳及如何仅存储日期

    本文旨在解释 Oracle 数据库中 DATE 类型总是包含时间戳的原因,并提供在数据库中存储日期时去除时间部分的方法,重点介绍如何通过格式化函数控制日期显示,而非修改数据库结构。 在 Oracle 数据库中,DATE 类型的设计初衷就是同时存储日期和时间信息。即使你只关心日期部分,DATE 类型仍…

    2025年12月6日 java
    000
  • mysql中事务隔离级别有哪些

    读未提交允许读取未提交数据,易引发脏读、不可重复读和幻读;2. 读已提交确保读取已提交数据,避免脏读但存在不可重复读和幻读;3. 可重复读保证事务内多次读取一致,MySQL默认级别,通过MVCC和间隙锁减少幻读;4. 串行化强制事务串行执行,避免所有并发问题但性能最差。选择隔离级别需权衡一致性与性能…

    2025年12月6日 数据库
    000
  • 优化MySQL电话号码字段搜索:解决空格与格式多样性问题

    本文详细介绍了在mysql数据库中,如何高效地搜索包含空格或多种格式的电话号码字段。针对`like`查询无法识别空格字符的问题,核心解决方案是利用`replace`函数在查询时移除字段中的空格,从而实现准确匹配。教程还将探讨更全面的数据清洗策略和性能优化建议,以提升搜索效率和数据质量。 在数据库管理…

    2025年12月6日 后端开发
    000
  • OpenJPA 在 Oracle 中处理字符串长度限制的警告与解决方案

    本文深入探讨了 openjpa 在与 oracle 数据库交互时,针对字符串字段可能遇到的“值超过 4000 字节/字符”的警告信息。该警告源于 oracle `varchar2` 数据类型的默认 4000 字节限制。教程将详细介绍两种主要的解决方案:通过 `@column(length = n)`…

    2025年12月6日 java
    000
  • Java中MANIFEST.MF的作用 详解清单文件

    manifest.mf是java中jar文件的元数据配置文件,位于meta-inf目录下,用于定义版本、主类、依赖路径等关键信息。1. 它允许指定入口类,使jar可直接运行;2. 通过class-path管理依赖,减少类加载冲突;3. 可配置安全权限,如设置沙箱运行;4. 常见属性包括manifes…

    2025年12月5日 java
    000
  • SQL文件如何Mysql 导入数据库

    1、在 win 系统下使用 mysql 中的source命令即可实现导入 sql 文件: mysql -u root -pmysql>use 数据库名mysql>source d:/数据库名 这样就完成了 Win 系统下的 SQL 文件的导入。 2、在 Linux 系统下导入 SQL 文…

    数据库 2025年12月5日
    100
  • Java中枚举类型怎么定义 掌握Java枚举的定义和常用方法

    java中定义枚举类型使用enum关键字,例如public enum weekday { monday, tuesday,…};枚举可包含字段和方法,如添加中文名称字段及获取方法;可在switch语句中使用,确保覆盖所有值;常用方法包括values()、valueof()、ordinal…

    2025年12月4日 java
    000
  • linux下数据库有哪些

    linux下数据库有:1、Oracle;2、MySQL;3、MariaDB;4、SQL Server;5、Memcached,“Key-Value”型数据库;6、Redis,“Key-Value”型数据库;7、MongoDB等。 本教程操作环境:Red Hat Enterprise Linux 6.…

    2025年12月4日 运维
    000
  • 如何在Spryker中优雅地扩展价格产品存储功能,spryker/price-product-storage-extension让定制化变得简单

    可以通过一下地址学习%ign%ignore_a_1%re_a_1%:学习地址 作为一名spryker开发者,你是否曾遇到这样的场景:你的电商平台需要实现一套独特的定价策略,比如根据用户等级提供专属折扣、从外部系统实时获取价格,或是执行复杂的捆绑销售定价逻辑。这些需求往往需要深入到spryker的核心…

    开发工具 2025年12月4日
    000
  • MySQL关系型数据库事务的ACID特性与实现方法

    1. 事务的 ACID 特性详 acid 是为保证事务(transaction)是正确可靠的,所必须具备的四个特性: 原子性(Atomicity):事务中的操作同时成功或者失败。 一致性(Consistency):数据库事务不能破坏数据的完整性以及业务逻辑上的一致。 隔离性(Isolation):一…

    数据库 2025年12月4日
    700
  • 韩国星巴克:请勿带台式电脑和打印机等大型设备进店

    感谢网友 c%ignore_a_1%je_he 的线索分享! 8 月 14 日消息,据《FORTUNE(财富)》8 月 12 日报道,在办公空间紧张的韩国,越来越多远程办公者选择将星巴克门店当作临时办公室。 为应对这一趋势,韩国星巴克已出台新规,禁止顾客携带大型工作设备入店,例如台式电脑、打印机等。…

    2025年12月4日
    200
  • 华为nova8手机怎么设置屏幕按键_华为nova8手机设置屏幕按键教程

    华为n%ignore_a_1%va8手机设置屏幕按键的问题一直困扰着用户,如何轻松快捷地设置屏幕按键,是大家亟待解决的难题。本文由php小编百草为您详细讲解华为nova8手机设置屏幕按键的教程,指导您一步步操作,解决您的难题,详情请浏览以下内容。 1、打开手机桌面上的【设置】,点击进入【系统和更新】…

    2025年12月4日
    000
  • linux不产生core文件怎么办

    %ignore_a_1%不产生core文件的解决办法:1、检查Core dump的目录是否存在并设置进程对该目录有写权限;2、检查服务程序是否调用seteuid();3、设置足够大的Core文件大小限制;4、修改profile等等。 本文操作环境:linux5.9.8系统、Dell G3电脑。 li…

    2025年12月4日
    000
  • 英文版Server 2003打开Recorder方法

    %ignore_a_1% server 2003与windows xp诞生于同一时期,如今再次开启这个经典系统,那熟悉的画面立刻勾起深深的回忆,令人不禁陷入往昔的思绪之中。 1、 点击屏幕左下角的“开始”按钮。 2、 “开始”菜单随即自动弹出并显示内容。 3、 将鼠标指针移动到“所有程序”选项上。 …

    2025年12月4日 软件教程
    000
  • mysql物理备份是什么

    说明 1、物理备份又分为冷备份和热备份两种。 2、和逻辑备份相比,它的优点是备份和恢复的速度更快,因为物理备份的原理都是基于文件的cp。 实例 myisam存储引擎的热备份有很多方法,本质其实就是将要备份的表加读锁,然后再 cp 数据文件到备份目录。 使用 %ignore_a_1%hotcopy 工…

    数据库 2025年12月4日
    000
  • NIO中ClosedChannelException的常见触发场景与规避方法有哪些?

    closedchannelexception通常因在关闭的通道上操作引发,解决需清理引用、捕获异常并使用心跳检测。首先确保关闭通道后无线程持有引用,其次用try-catch处理异常并停止相关操作,最后为长期应用引入心跳机制验证通道有效性。诊断时通过日志、堆栈分析、代码审查和同步机制排查并发问题。优雅…

    2025年12月4日 java
    000
  • 华为p40pro进行分屏的方法

    各位读者,您是否在使用%ignore_a_1% p40 pro 时遇到了分屏问题?当您想要同时查看两个应用程序或执行多项任务时,分屏功能非常有用。本文由 php小编百草为您介绍华为 p40 pro 的分屏方法,为您提供清晰易懂的分步指南。通过以下详细内容,您将掌握分屏操作,提升您的华为 p40 pr…

    2025年12月4日 手机教程
    000
  • 最新Navicat 15 for MySQL怎么破解

    %ignore_a_1% for mysql是一个针对mysql数据库而开发的第三方mysql管理工具,该软件可以用于 mysql 数据库服务器版本 3.21 或以上的和 mariadb 5.1 或以上。能够同时连接 mysql 和 mariadb 数据库,并与 amazon rds、amazon …

    2025年12月4日 数据库
    000
  • 小鹏辟谣智驾将重回有图方案:刚分享完基座模型大路线

    4月15日,有报道称小鹏为了与理想竞争,计划在%ign%ignore_a_1%re_a_1%技术上重新考虑众源建图方案。对此,小鹏官方进行了澄清。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 此前有传言称,小鹏内部已经启动了众源建图技术的…

    2025年12月4日
    000
  • linux 红帽中文乱码怎么办

    %ignore_a_1%红帽中文乱码的解决办法:1、用root账户登录linux系统;2、在sysconfig中找到i18n文件;3、把“LANG=zh_CN.UTF-8”修改为“LANG=”zh_CN.GB18030″”;4、重启系统即可。 本文操作环境:redhat6.5…

    2025年12月4日 运维
    000

发表回复

登录后才能评论
关注微信