mysql增加缓存的命令,mysql查询缓存-csdn博客


本站和网页 https://blog.csdn.net/weixin_36261449/article/details/115905445 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

mysql增加缓存的命令,MySQL查询缓存-CSDN博客
mysql增加缓存的命令,MySQL查询缓存
最新推荐文章于 2023-01-10 15:49:32 发布
特不深沉 阅读量384 收藏 点赞数 文章标签: mysql增加缓存的命令 一、查询缓存说明
MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELECT语句和该查询语句的结果集做了一个HASH映射并保存在一定的内存区域中。当客户端发起SQL查询时,Query Cache的查找逻辑是,先对SQL进行相应的权限验证,接着就通过Query Cache来查找结果(注意必须是完全相同,即使多一个空格或者大小写不 同都认为不同,即使完全相同的SQL,如果使用不同的字符集、不同的协议等也会被认为是不同的查询而分别进行缓存)。它不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生同任何存储引擎的交互,减少了大量的磁盘IO和CPU运 算,所以有时候效率非常高。
二、查询缓存命中
判断一个缓存是否被命中,通过查询语句的HASH值来判断,HASH值因素包括查询语句、查询数据库、客户端版本协议等,如查询语句任何字符的不同,都会导致HASH结果的不同,都可能导致缓存无法命中。有些查询不能被缓存,如查询中包含UDF、存储函数、用户自定义变量、临时表、mysql库中系统表、或者包含列级权限的表、有着不确定值的函数(Now()); 查询缓存是完全存储在内存中的,对整个内存空间分配回收等,会额外产生系统资源消耗,这会导致内存碎片的产生。
三、查看查询缓存的参数MariaDB [(none)]> show global variables like '%query%';
+------------------------------+--------------------+
| Variable_name                | Value              |
| expensive_subquery_limit     | 100                |
| ft_query_expansion_limit     | 20                 |
| have_query_cache             | YES                |
| long_query_time              | 10.000000          |
| query_alloc_block_size       | 16384              |
| query_cache_limit            | 1048576            |
| query_cache_min_res_unit     | 4096               |
| query_cache_size             | 16777216           |
| query_cache_strip_comments   | OFF                |
| query_cache_type             | ON                 |
| query_cache_wlock_invalidate | OFF                |
| query_prealloc_size          | 24576              |
| slow_query_log               | OFF                |
| slow_query_log_file          | localhost-slow.log |
14 rows in set (0.01 sec)
查询缓存相关变量说明
query_cache_min_res_unit: 查询缓存中内存块的最小分配单位;较小值会减少浪费,但会导致更频繁的内存分配操作;较大值会带来浪费,会导致碎片过多;
query_cache_limit:能够缓存的最大查询结果;对于有着较大结果的查询语句,建议在SELECT中使用SQL_NO_CACHE
query_cache_size:查询缓存总共可用的内存空间;单位是字节,必须是1024的整数倍;
query_cache_type: ON, OFF, DEMAND
a、0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache;
b、1(ON):开启 Query Cache 功能,但是当SELECT语句中使用SQL_NO_CACHE提示后,将不使用Query Cache;
c、2(DEMAND):开启Query Cache 功能,但是只有当SELECT语句中使用了SQL_CACHE 提示后,才使用Query Cache。
query_cache_wlock_invalidate:如果某表被其它的连接锁定,是否仍然可以从查询缓存中返回结果;默认值为OFF,表示可以在表被其它连接锁定的场景中继续从缓存返回数据;ON则表示不允许;MariaDB [(none)]> show global status like 'Qcache%';
+-------------------------+----------+
| Variable_name           | Value    |
| Qcache_free_blocks      | 1        |
| Qcache_free_memory      | 16759656 |
| Qcache_hits             | 0        |
| Qcache_inserts          | 0        |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 7        |
| Qcache_queries_in_cache | 0        |
| Qcache_total_blocks     | 1        |
8 rows in set (0.00 sec)
查看缓存变量参数说明:
Qcache_free_blocks: 缓存池中空闲块的个数,空闲的内存块。
Qcache_free_memory: 缓存中空闲内存空间
Qcache_hits: 缓存命中次数
Qcache_inserts: 可缓存查询语句的结果被放入缓存的次数
Qcache_lowmen_prunes: 有多少次是因为查询缓存内存空间太少而使用LRU算法清理缓存的次数
Qcache_not_cached: 可缓存却未能缓存的结果,例如查询结果超出缓存块大小,查询中包含可变函数等
Qcache_queries_in_cache: 当前缓存中缓存的SQL数量
Qcache_total_blocks: 整个查询缓存有多少内存块
缓存命中率:Qcache_hits/(Qcache_hits+Com_select)
四、分析和配置查询缓存流程及提高缓存命中率
①.开始,如果查询缓存命中率是否可以接受?如果可以的话,就结束。
②.不能接受目前的缓存命中率,查看大部分查询不是可缓存?是的话,就是大部分查询都不能缓存,query_cache_limit足够大吗?如果是,就结束,说明查询不能缓存,有可能是用户自定义变量、存储函数等,这种情况,建议关闭查询缓存。如果不是足够大,则需要增加此值。
③.1.大部分查询缓存都是可以缓存,但是却没有被缓存。是否发生很多严重工作?
是的话,查看缓存是不是被碎片化。需要降低query_cache_min_res_unit的值或是否flush query cache命令来整理缓存,减少碎片。
③.2.如果缓存不是因为碎片太多导致没有被缓存,内存过低发生的修正工作?
④.1.如果是内存过低,则增加query_cache_size。
④.2.如果不是内存过低,是否有很多的更新语句?频繁的更新表导致的缓存不能被命中,是有很多频繁更新的语句,负载不适合缓存,建议关闭缓存。不是有很多频繁更新的语句,则有其他配置的问题。
⑤.如果不是发生了很多验证工作,缓存启动了?是,没有见过此查询。否的话,启动缓存。
优惠劵
关注
点赞
觉得还不错?
一键收藏
知道了
评论
一、查询缓存说明MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集,MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELECT语句和该查询语句的结果集做了一个HASH映射并保存在一定的内存区域中。当客户端发起SQL查询时,Query Cache的查找逻辑是,先对SQL进行相应的权限验证,接着就通过Query Cache来查找...
复制链接
扫一扫
mysql
缓存
设置(
查询
qq_38639813的博客
08-18
1748
一、概念
1、从
MySQL
4开始,出现了QueryCache
,如果使用了QueryCache,当
接收到一个和之前同样的
,服务器将会从
中检索结果,而不是再次分析和执行上次的
。这样就大大提高了性能,节省时间,非常有用。
2、
存在一个hash表中,通过
SQL,
数据库,客户端协议等作为key.在判断是否命中前,
不会解析SQL,而是直接使用SQL去
,SQL任何字符上的不同,如空格,注释,都会导致
不命中。如果
中有不确定数据,例如CURRENT_DATE
和清除
命令
使用详解
09-10
主要介绍了
使用详解,对于一些不常改变数据且有大量相同sql
的表,
会显得比较有用一些,需要的朋友可以参考下
参与评论
您还未登录,请先
登录
后发表或查看评论
设置内存
提高
速度
zuoliangzhu的专栏
01-10
934
InnoDB存储引擎是基于磁盘存储表文件和索引的,并将数据按页的方式管理,由于访问磁盘的速度较慢,多次访问磁盘会造成数据库性能的下降,为此,InnoDB在内存中开辟一个缓冲池,将已经从磁盘读取的页放到缓冲池中,如果下次再需要读取相同的页时,直接从缓冲池中读取。
增加
设置 提高
性能 | 学步园
weixin_39884100的博客
01-20
331
首先看看MSYQL逻辑框架:图片来自高性能
如果使用了QueryCache,当
中检索结果,而不是再次分析和执行相同的
。这样就能大大提高
性能。打开
,要通过几个步骤来设置:虽然你设置
允许
,但是如果你设置的
大小为了0,这和没有允许没什么区别。所以必须是几个步骤的设置才能真正打开
这个功能。下面演示...
havequerycache_如何开启
的中的Query Cache
weixin_36403106的博客
01-27
1724
Query Cache是
中的一个功能,主要是用来
相关数据,本文文详细介绍如何开启
中的Query Cache,以及Query Cache中的一些参数。
Query Cache的参数:
> show variables like 'query_cache%';+------------------------------+-------...
一分钟弄懂
的Query Cache优化
a1472750149的博客
12-03
463
1、Query Cache实现原理
的Query Cache实现原理实际上并不是特别的复杂,简单的来说就是将客户端请求的Query语句(当然仅限于SELECT类型的Query)通过一定的hash算法进行一个计算而得到一个hash值,存放在一个hash桶中。同时将该Query的结果集(Result Set)也存放在一个内存Cache中的。存放Query hash值的链表中的每一个hash值所在的节点中同时还存放了该Query所对应的Result Set的Cache所在的内存地址,以及该Query所
清空
的可行方法
12-15
您可能感兴趣的文章:
优化之
优化
说明使用Memcache
数据库操作的原理和
过程浅析浅析
内存的使用说明(全局
+线程
高速
启动方法及参数详解(query_cache_...
设置
01-21
可将如下语句 query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 存放到/etc/my.cnf文件的[
d]下 然后重启
数据库 service
d restart 就会启动
机制Query ...
MySql
学习总结
xsh的博客
04-10
448
本文是对高性能的
Mysql
的学习总结。包含
的一些基础知识、概念理解和参数介绍和设置。
xishizhaohua的专栏
10-18
200
的作用就是当
种检索结果,而不是再次分析和执行上次的
。这样就大大提高了性能,节省时间。
1.配置
修改配置文件,修改[
d]下的query_cache_size和query_cache_type(如果没有则添加)。其中query_cache_size表示
的大小,而query_cache_...
Query Cache机制
SegmentFault
08-21
575
Query Cache保存
返回的结果集。当
命中
时,
跳过解析、优化和执行阶段,直接返回
结果。
Query Cache系统会跟踪
中涉及的每一张表,如果这些表发生变化,那么和这个表相关的所有
数据都会失效。这种机制效率看起来比较低,因为在数据表变化时,
到的结果可能没有发生变化。
QueryCache对应用程序是透明的,应用程序无需关心
是通过Qu
怎样给
层_
性能调优的10个方法
weixin_35700754的博客
02-12
332
1. 选择合适的存储引擎: InnoDB除非你的数据表使用来做只读或者全文检索 (相信现在提到全文检索,没人会用
MYSQL
了),你应该默认选择InnoDB 。你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快,这是因为:MyISAM 只
索引,而 InnoDB
数据和索引,MyISAM 不支持事务。但是 如果你使用innodb_flush_log_at_trx_c...
Query Cache相关配置变量和状态变量
星星的技术专栏
05-16
1225
Query Cache相关配置变量| query_alloc_block_size | 8192 |为
分析和执行过程中创建的对象分配的内存块大小,强调分析和执行过程中| query_cache_limit | 1048576 |不要
大于该值的结果| query_cache_min_res_unit | 4096 |
分配的最小块的大小| query_cache_size | 1677
钟明家
07-25
79
开始—>命中率可以接受—->结束
开始—>命中率不可以接受—->大部分都不是能
—->query_cache_limit足够大—->
结果无法
query_cache_limit
开始—>命中率不可以接受—->大部...
策略详解
Lion_Long的博客
11-03
6098
方案目的分析:
层的作用,
层选择,场景分析。
提升
访问性能的方式:
主从复制,读写分离,连接池,异步连接。
redis作为主数据库的常用方法。
方案:
一致性状态分析,制定读写策略。
同步方案:canal,go-
-transfer。
方案的故障问题及解决:
穿透,
击穿,
雪崩。
方案的弊端是不能处理多语句的事务。
策略
qq_42331828的博客
04-09
979
文章目录一、数据库提升读写性能的方式二、热点数据处理三、实现原理
一、数据库提升读写性能的方式
数据库有哪些提升读写性能的方式
1、连接池,阻塞io+线程池
2、异步连接 非阻塞io
3、sql执行出发:即时执行+预编译执行(跳过了词法句法分析,权限验证,优化器)prepare接口
我们来举个例子
的连接过程
连接之后,会进行一个验证,会主动发送一个连接给服务器,采用的密码以及连接方式,比如说安装
8.0会遇到一个问题,Navicat有些版本不支持
8.0默认连接方式
数据库优化:其余多种优化方式
菜鸡也有大佬梦
12-24
1646
1. 应用优化
前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。
1.1 使用连接池
对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能。
1.2 减少对
的访问
1.2.1 避免对数据进行重复检索
在...
(转)
weixin_34319111的博客
01-07
328
query cache从4.1版本开始提供了,不过值今天本人才对其进行研究。默认配置下,
的该功能是没有启动的,可能你通过show variables like '%query_cache%';会发现其变量have_query_cache的值是yes,
初学者很容易以为这个参数为YES就代表开启了
,实际上是不对的,该参数表示当前版本的
是否支持Query...
优化详解(四)——
永远是少年
01-09
5956
今天继续给大家介绍
相关知识,本文主要内容是
数据库的
设置。
一、
作用与设置
二、
查看
开启
最新发布
05-21
要开启
,需要在
配置文件 my.cnf 中进行配置。以下是开启
的步骤:
1. 打开
配置文件 my.cnf。一般位于 /etc/
/my.cnf 或 /etc/my.cnf。
2. 在 [
d] 段下添加以下代码:
```
query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M
其中,query_cache_type = 1 表示开启
,query_cache_size 表示
区大小,query_cache_limit 表示单个
结果的最大
大小。
3. 保存并关闭 my.cnf 文件。
4. 重启
服务。
后,
会将
结果
到内存中,当再次
相同语句时,直接从
中获取结果,提高
效率。但是,
适用于相同的
被频繁执行的情况,如果
语句和参数不同,
就会失效,甚至会导致性能下降。因此,在使用
时,需要根据具体情况进行测试和调整。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
75
原创
周排名
141万+
总排名
9万+
访问
等级
78
积分
10
粉丝
14
获赞
88
私信
热门文章
hp打印机装不上服务器系统,winxp系统无法安装HP打印机驱动程序如何解决
4368
c语言中timer类的用法,c中timer的用法
3411
matlab中fir滤波器代码_【滤波器】MATLAB模拟设计FIR低通数字滤波器
3190
帆软 上传文件到服务器,自定义上传文件至 FTP 服务器
3025
matlab实验八,matlab实验八
2431
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
最新文章
问道手游服务器维护,问道手游3月14日服务器维护内容一览
服务器本地输入域名可以打开网站,但其他地方打不开网站,,域名解析后出现网站打不开的几种情况...
vrtl 虚拟服务器,虚拟现实期末复习.docx
2021年
142篇
2020年
19篇
目录
被折叠的 
 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额
3.43
前往充值 >
需支付:
10.00
取消
确定
下一步
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值