mysql优化-》查询缓存
使用MySql查询缓存(query_cache_size)
在MySql中查询缓存的原理:
其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小是用字节大小来计算的,所以缓存多少数据可以根据需求进行调节.如果是第一次查询,则从硬盘找查找并返回结果,如果有记录返回Qcache会记录查找到的结果,当用户发出第二次查询,MySql就会询问Qcache是否已经存在了这个查询。如果存在则从Qcache中返回查询结果,如果不存在则又一次从硬盘中查找结果并把找到的结果放到Qcache当中.
1.使用MySql查询缓存
语法规则: set global query_cache_size = 开辟内存的字节大小
比如我们要把一个Qcache的查询缓存的空间设置为64M,那么我们可以使用以下命令:
set global query_cache_size = 64 * 1024 * 1024
换算原理如下:
64M = ?字节
1kb = 1024 字节
1M = 1024KB = 1024 * 1024字节
64M = 64 * 1024 * 1024
默认的情况下,mysql是没有开启查询缓存的功能
没有开启查询缓存,那么无论你查多少次数据库都是去硬盘当中查找数据,因此速度不会发生很多的时间差,然后现在设置查询缓存Qcache的空间为64M后在来查看结果,详细步骤如下:
第1步:使用命令set global query_cache_size = 64 * 1024 * 1024 设置查询缓存的空间(Qcache的空间)
不出现任何的错误就代表设置成功,就代表当前开启了查询缓存,并且拥有64M的临时内存空间。
第2步:再次测试select * from tbl_no where username=’itheima’查看结果
第1次查询:4.78sec,并且Qcache会记录当前的查询结果
第2,3,4...次查询:0sec,从Qcache中返回结果,发觉速度提升了很多倍
总结:查询缓存是一种非常简单的手段,只需要一个简单命令设置空间的字节大小就能完成这个优化技术,然而查询缓存是需要付出代价的,因为查询缓存会占据内存的空间,因此如果你开启很多的内存空间,而内存空间爆满了,那么计算机的操作系统有可能会缓慢甚至重启,因此查询缓存是在一个公司创立时候大概只有100万条数据左右的时候建议使用,如果你数据已经超过千万级别访问量又特别的大的时候,查询缓存极有可能造成服务器的重启或者内存的崩溃.
注意事项:查询缓存对整个数据库都有效
2.关闭MySql查询缓存
语法规则: set global query_cache_size = 0
关闭后,缓存就会失效,之前的查询结果全部又会到硬盘当中去查找了
mysql优化-》查询缓存的更多相关文章
- mysql的查询缓存模式介绍
mysql的查询缓存 查询是数据库技术中最常用的操作.查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的 SQL语句后, 执行这条SQL语句,然后将查询到的结 ...
- mysql数据库查询缓存总结
概述 查询缓存(Query Cache,简称QC),存储SELECT语句及其产生的数据结果.闲来无事,做一下这块的总结,也做个备忘! 工作原理 查询缓存工作原理如下: 缓存SELECT操作的结果集和S ...
- MySQL关闭查询缓存(QC)的两种方法
MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP ...
- 关于ORACLE的硬解析和软解析与MySQL的查询缓存query_cache探讨
今天在项目中探讨到Oracle对于SQL语句的解析方法以及MySQL相应的处理方法: --------------------------------------------------------- ...
- mysql的查询缓存
查询是数据库技术中最常用的操作.查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的 SQL语句后, 执行这条SQL语句,然后将查询到的结果返回给客户端 ...
- MySQL优化查询 5.7版本
1. 变更参数 : query_cache_type 如果何配置查询缓存: query_cache_type 这个系统变量控制着查询缓存工能的开启的关闭.query_cache_type=0时表示关闭 ...
- mysql查看查询缓存是否启用
查看查询缓存情况: mysql> show variables like '%query_cache%'; (query_cache_type 为 ON 表示已经开启) +---------- ...
- MySQL优化二 缓存参数优化
数据库属于 IO密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化数 ...
- MySQL优化查询相关
[查询优化相关] 1.如何定位相关慢的查询: a.可以开启慢查询日志,也可以使用show profiles 去记录相关查询到一个临时表再分析. b.show processlist 看看有没有大量等 ...
- mysql优化查询
使用索引查询 MariaDB [test]> explain select * from te where id=22; #在没有增加索引情况下,rows为7,即查询行数 +------+--- ...
随机推荐
- js 匹配2个字符串相似度
strSimilarity2Number: function (s, t) { var n = s.length, m = t.length, d = []; var i, j, s_i, t_j, ...
- http请求报文格式和响应报文格式
转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...
- DEBUG技巧-设定合适的日志级别
有些技能只有踩过坑的人才能够掌握,能用来避免后来的坑,很多时候是用凌晨的时间换来的,我们通常把他叫做经验. 故事 这个一个关于springmvc的坑的故事. 某天晚上本打算一个小功能分分钟搞定上线,但 ...
- POJ 1861:Network(最小生成树&&kruskal)
Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13266 Accepted: 5123 Specia ...
- [Phonegap+Sencha Touch] 移动开发26 Android下的sencha touch程序,转屏时,Ext.Viewport不能触发orientationchange事件的解决的方法
Sencha touch 2.4.2 已经解决问题了. 比方你为Ext.Viewport的orientationchange事件加入了一个监听方法: Ext.Viewport.on('orientat ...
- webpack+babel项目在IE下报Promise未定义错误引出的思考
低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...
- 快速序列化组件MessagePack介绍
简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有 ...
- ASP.NET Core 指定环境发布(hosting environment)
ASP.NET Core 应用程序发布命令: dotnet publish [<PROJECT>] [-f|--framework] [-r|--runtime] [-o|--output ...
- 在servlet中使用@Autowired注解无法注入实例的问题
今天在项目中碰到了一个奇怪的问题,原来的servlet中使用了HttpsWxService httpsWxService = new HttpsWxService()这一句代码,然后再HttpsWxS ...
- python集合增删改查,深拷贝浅拷贝
集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系 ...