当前位置:首页 > 日记 > 正文

mysql查询缓存原理分析

mysql查询缓存原理分析
原理
QueryCache(以下简称QC)是基于SQL语句缓存。如果一个SQL查询从选择MySQL服务器将尝试使用QC,每个高速缓存存储为SQL文本作为重点。在应用QC、SQL文本将不受理任何更多的,说,两个SQL语句,如果差异是连字符(例如,情况不同的是,多个空间,等等),这两个SQL将使用不同的缓存。
但是SQL文本可以由客户机处理。例如,在正式命令行客户机中,在向服务器发送SQL之前,您将执行以下操作:

过滤所有注释
删除SQL文本前后的空格、制表符和其他字符。注意它是文本的前后部分。中间部分不会被删除。

以下三个SQL,因为选择和尺寸之间的关系,最后与其它两个绝对是不同的存储位置在QC,第一和第二,不同的是,后者有一个音符,在不同的客户,会有不同的结果。所以,在保险的情况下,尝试不使用动态注释尽可能。在PHP的MySQL扩展,SQL的注释不会被删除,三个SQL将存储在三个不同的缓存,虽然他们的结果都是一样的。

SELECT * FROM人名字= 'surfchen;
选择*从人民那里 / *嘿~ * /名称= 'surfchen;
SELECT * FROM人名字= 'surfchen;
目前只有SELECT语句将被缓存,而其他类似显示,使用语句将不会被缓存。

因为QC是这样一个前端,这样一个简单的缓存系统,如果更新了表,与此表相关的SQL的所有QC都将失效。

换句话说,如果一个表是经常更新的,有必要考虑是否应该QC相关的一些SQL。经常更新的表,如果应用到QC,可能会加重数据库的负担,而不是减轻负担。我一般的做法是默认开放的QC,和禁用一些SQL语句,包括经常更新的表sql_no_cache关键词缓存。这样可以避免不必要的内存操作尽可能保持记忆的连续性,尽可能多的。

QC不应该用于那些SQL语句非常分散。例如,选择从名称= 'surfchen'is用来查询用户和密码的用户。这样的声明,在一个系统中,可能用只有当用户登陆了。每一个用户登录使用的查询是不同的从SQL文本。QC在这里几乎没有用处,因为缓存数据很少使用。他们只占据记忆中的位置。

存储块
在本节中,存储块和块具有相同的意义。
当QC缓存查询结果,它一般不会一次性分配足够的内存来缓存结果。相反,它是存储块在获取查询结果的过程中,当一个存储块填充,一个新的存储块将被创建和内存分配(分配),一个单一的存储块的内存分配的大小是由query_cache_min_res_unit参数控制,默认的是4KB。最后一个存储块,如果不使用,那么未使用的内存将被释放。如果缓存的结果,那么可能会导致过于频繁的操作内存的分配,系统可以降低;如果缓存结果是非常小的,它可能会导致过多的记忆的碎片,如果这些碎片太小了,它像与使用分开。

除了查询结果需要存储块,每个SQL文本也需要一个存储块,和涉及到的表也需要一个存储块(表的存储块是由所有线程,共享每个表只需要一个存储块)。存储块=数据库表中查询结果* 2 +数的数。也就是说,当第一个缓存的产生,至少有三个存储块是必要的:表信息存储块,SQL文本存储块,和查询结果的存储块,如果第二查询使用相同的表,然后只有两块是至少需要:SQL文本存储块,和查询结果存储块。

通过观察qcache_queries_in_cache和qcache_total_blocks,你可以知道每缓存结果平均占用的存储块。如果他们的比例接近1:2,目前query_cache_min_res_unit参数已经是够大的。如果qcache_total_blocks远远超过qcache_queries_in_cache,你需要增加的query_cache_min_res_unit大小。

对qcache_queries_in_cache * query_cache_min_res_unit内存(SQL文本和表格信息块很小,可以忽略)。如果它比query_cache_size-qcache_free_memory大得多,那么我们可以尽量减少query_cache_min_res_unit价值。

调整大小
如果qcache_lowmem_prunes增长迅速,这意味着许多高速缓存被释放,因为内存不足,不能因为相关表的更新,努力提高query_cache_size努力使尽可能多的qcache_lowmem_prunes零增长。
启动参数
显示变量like'query_cache %看到这个信息。
query_cache_limit:如果一个查询的结果大于这个值,那么它不缓存
query_cache_size:分配给QC的记忆。如果设置为0,这相当于禁用QC。需要注意的是,QC必须使用kb左右来存储它的结构很重要,如果设置不少于40kb,它相当于禁用QC,QC存储的最小单位是1024字节,所以如果你设置的值不是1024的倍数,该值将四到五的值是最接近的当前值等于1024。
query_cache_type:0完全禁止QC,不是由SQL(也可能控制语句需要注意的是,即使是残疾人,设置参数在内存大小或将分配);1 QC启用,您可以在残疾人使用的sql_no_cache SQL语句;2可以在SQL语句中启用sql_cache。
query_cache_min_res_unit:分配每次质检结果内存的大小
状态
显示状态like'qcache %看到这个信息。
qcache_free_blocks:当一个表被更新,缓存块与它将是免费的。但块可能仍然在队列中存在,除非是在队列的末尾。这些块将被视为该值。刷新查询缓存的语句可用于空的空闲块。
qcache_free_memory:可用于在内存中,如果是小的,可以考虑添加query_cache_size
qcache_hits:从MySQL的过程和缓存命中数
qcache_inserts:已经从MySQL过程中加入质量数
酒吧,qcache_lowmem_prunes数:已由QC由于内存不足,删除,增加query_cache_size和保持尽可能多的价值0。
qcache_not_cached:从MySQL进程并没有一些只读查询的缓存(包括选择、显示、使用、查询、等)
qcache_queries_in_cache:目前在缓存SQL数
qcache_total_blocks:块数量在QC。查询可以由多个块,这些块存储,最后填充的内存将被释放。例如,对于较大内存的一个QC成果,如果query_cache_min_res_unit是4KB,它最终将产生3块,第一块是用来存储SQL语句文本,这不会是统计查询+ cache_size,二块4KB,第三块2kb(第一allocate4kb,然后释放多余的2KB)。每个表,当第一个SQL查询,它是缓存,使用一块表来存储信息。也就是说,块将用在三个地方:表信息,SQL文本和查询结果。

相关文章

如何修改C、D、D等字母名称系统

如何修改C、D、D等字母名称系统

系统,修改,字母,名称,电脑软件,点评:喜欢C是属于系统驱动的,D驱动系统是,有时我们需要改变系统驱动的名称,那么我们怎么能改变它,这里是一个很好的方式,你可以尝试操作量。 也许你不知道什么是系统驱动,比如C是系统驱动,D驱动系统是。但是有时候我…

有些字打不出来/搜狗生僻字的设置

有些字打不出来/搜狗生僻字的设置

设置,方法,搜狗,生僻字,不出来,问题: 我用了五种搜狗输入法2,发现有些词不能出来。如:和同事使用同一版本的搜狗输入法,但可以玩那个词。不知道发生了什么事 解决方案: 有些字打不出来。可能无法打开搜狗五笔查询GBK汉字罕见;。 打开GBK法:中国…

powerpoint2010动画刷快速设置动画

powerpoint2010动画刷快速设置动画

设置,动画效果,动画,快速,电脑软件,你还记得《办公室里的格式刷》吗它可以复制一个对象的格式到其他对象。一个非常有用的工具,添加到powerpoint2010;动画刷我们可以用它来快速设置动画效果。 powerpoint2010复制在一个对象的动画效果 如果A…

总结MySQL构建和查询优化的一些实

总结MySQL构建和查询优化的一些实

查询优化,实用技巧,电脑软件,MySQL,MySQL的构建阶段是非常重要的一步。表结构的质量直接影响后续的管理和维护,然后我们将在明天上班之前分享一些实用的技巧来总结个人MySQL构建表和MySQL查询优化。 技巧1,为数据表冗余记录添加时间和更新时…

游戏电脑屏幕上的屏幕屏幕变成游戏

游戏电脑屏幕上的屏幕屏幕变成游戏

屏幕,红色,解决方案,游戏,电脑屏幕上,问题: 最近,在剑的传说和童话5前传,电脑时间会出现红屏现象。当你进入游戏,屏幕变成红色。当游戏退出游戏,屏幕上出现的原因是什么 答案uff1a 上述情况一般出现在带有显示和显示的双显卡上,如果遇到红色屏…

创建符号链接(硬链接和符号链接)的Li

创建符号链接(硬链接和符号链接)的Li

符号链接,硬链接,方法,电脑软件,Linux,点评:本文主要介绍了linux创建符号链接的方法(硬链接和符号链接),需要的朋友可以参考下。 硬链接(硬链接):为文件创建额外的条目。在使用时,与文件没有差别;删除后,只删除不删除文件的链接; 硬链接的局限性:1。不…

如何插入各种形状的素材

如何插入各种形状的素材

形状,素材,电脑软件,制作幻灯片时,要将一些照片或图片插入各种圆形、方形或其他形状,以达到预期效果,那么这一步是如何实现的呢在这里,我们聚在一起学习插入各种形状的图片。 首先,在绘图工具的选择图形中选择你喜欢的图形,然后在PowerPoint中拉…

Excel的生日和身份证号码:中间功能

Excel的生日和身份证号码:中间功能

身份证号码,生日,功能,技巧,电脑软件,excel用身份证号码计算生日:中间功能的用法和技巧。中间函数的作用是从文本字符串中指定的位置返回特定数量的字符(这个数字是由用户指定的)。 语法 中期(文本,start_num,num_chars) 文本是包含要提取的字符…

mysql学习笔记3:介绍表的基本操作

mysql学习笔记3:介绍表的基本操作

基本操作,学习笔记,电脑软件,mysql,要操作表,首先需要选择数据库,因为表在数据库中。 选择数据库 使用学校; 数据库的改变 选择好数据库后,我们可以在这个数据库中创建一个表 创建一个表 创建表学生( id > int, 名称varchar(20), 性别>布尔值 >; 查询…

用触发器和序列模拟oracle中自加实

用触发器和序列模拟oracle中自加实

模拟,触发器,序列,电脑软件,oracle,问题:在SQL Server数据库中,使用自添加列的属性也很方便,但它在Oracle中没有这个功能,您如何处理呢 答:虽然oracle中没有自增,但它可以通过触发器和序列来实现。 实例: 1。摆桌子 复制代码代码如下:创建表用…

如何删除word文件的水印(解决方案)

如何删除word文件的水印(解决方案)

文件,解决方案,删除,水印,电脑软件,问题: 有些文字数据是从互联网上下载的,有一点变化可以使用,但每一页都有水印,这是不合适的。如何去除水印 答案uff1a 删除word文档的水印方法:打开word文件,点击格式> > >水印背景;菜单(图1),在弹出的水印中选择…

Win8现代版本的Firefox被推迟,推迟

Win8现代版本的Firefox被推迟,推迟

推迟,版本,电脑软件,Firefox,评论:根据最新消息,现代UI版本Firefox和反弹。 在奥罗拉的Win8地铁Firefox预览Mozilla的预览之前的报道,当Mozilla表示将在2014年初发布其正式版。但据最新消息,现代的UI版本Firefox和反弹。 当预览发布,Mozilla表示…