MySQL 缓存 Query Cache(2)
来源:asp之家 发布时间:2010-03-13 17:06:00
启动参数
show variables like 'query_cache%'可以看到这些信息。
query_cache_limit
如果单个查询结果大于这个值,则不Cache
query_cache_size
分 配给QC的内存。如果设为0,则相当于禁用QC。要注意QC必须使用大约40KB来存储它的结构,如果设定小于40KB,则相当于禁用QC。QC存储的最 小单位是1024 byte,所以如果你设定了一个不是1024的倍数的值,这个值会被四舍五入到最接近当前值的等于1024的倍数的值。
query_cache_type
0 完全禁止QC,不受SQL语句控制(另外可能要注意的是,即使这里禁用,上面一个参数所设定的内存大小还是会被分配);1启用QC,可以在SQL语句使用SQL_NO_CACHE禁用;2可以在SQL语句使用SQL_CACHE启用。
query_cache_min_res_unit
每次给QC结果分配内存的大小
状态
show status like 'Qcache%'可以看到这些信息。
Qcache_free_blocks
当一个表被更新之後,和它相关的cache blocks将被free。但是这个block依然可能存在队列中,除非是在队列的尾部。这些blocks将会被统计到这个值来。可以用FLUSH QUERY CACHE语句来清空free blocks。
Qcache_free_memory
可用内存,如果很小,考虑增加query_cache_size
Qcache_hits
自mysql进程启动起,cache的命中数量
Qcache_inserts
自mysql进程启动起,被增加进QC的数量
Qcache_lowmem_prunes
由于内存过少而导致QC被删除的条数。加大query_cache_size,尽可能保持这个值0增长。
Qcache_not_cached
自mysql进程启动起,没有被cache的只读查询数量(包括select,show,use,desc等)
Qcache_queries_in_cache
当前被cache的SQL数量
Qcache_total_blocks
在 QC中的blocks数。一个query可能被多个blocks存储,而这几个blocks中的最後一个,未用满的内存将会被释放掉。例如一个QC结果要 占6KB内存,如果query_cache_min_res_unit是4KB,则最後将会生成3个blocks,第一个block用来存储sql语句文 本,这个不会被统计到query+cache_size里,第二个block为4KB,第三个block为2KB(先allocate4KB,然後释放多 馀的2KB)。每个表,当第一个和它有关的SQL查询被CACHE的时候,会使用一个block来存储表信息。也就是说,block会被用在三处地方:表 信息,SQL文本,查询结果。
排序缓冲
当一个查询需要对结果进行排序的时候,MySQL会分配一定的内存用来排序。这个内存大小由sort_buffer_size来控制。记得,这个参数是针对每个查询的,而不是所有查询总共可分配的量。
如果sort_buffer_size不够大,排序的结果将会被分段写入临时文件里。每次结束之後再把文件中的排序结果拿出来合并,进行再次排序, 直到得出最後结果。sort_buffer_size越小,合并的次数就越多。合并次数可以通过状态变量Sort_merge_passes获得。理论 上,Sort_merge_passes越小,排序越快。但是在实际应用中可能并非如此。sort_buffer_size如何设置需要根据实际运行环境 来进行测试。如果实在不知道如何测试,那么就设到使Sort_merge_passes为0吧。
read_buffer_size read_rnd_buffer_size join_buffer_size thread_cache
字段选择
从二进制角度考虑
select col1,col2 from table PROCEDURE ANALYSE();,这条语句可以根据当前表的内容来给出一个字段类型的推荐。
MyISAM
key_buffer_size
CACHE INDEX Syntax
innodb
innodb_buffer_pool_size
这是和innodb有关的最重要的一个参数。这个参数指定了innodb缓存池的大小。这个缓存池被用来存储
innodb_file_per_table innodb_additional_mem_pool_size=80M innodb_log_file_size=1G innodb_log_buffer_size=16M innodb_flush_method=O_DIRECT
(max_connections * (sort_buffer_size + read_buffer_size + read_rnd_buffer_size + join_buffer_size)) + key_buffer + innodb_bufer_pool_size + query_cache + tmp_table_size
系统相关
linux:
echo -n 0 >/proc/sys/vm/swappiness
huge page
memlock
优化工具
mysqltuner


猜你喜欢
- 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成 * 页,golang提供了html/tem
- 注释用于说明代码实现的功能、采用的算法、代码的编写者以及创建和修改的时间等信息。注释是代码的一部分,注释起到了对代码补充说明的作用。Pyth
- 一、merge函数用途pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到
- ⛳️ 本次反反爬实战案例背景本篇博客选择的案例是由 VX 好友提出,他希望有一篇博客能简单的介绍清楚下面这个问题。快速定位加密参数逻辑,快速
- 1.登录mysql: mysql -u root -h 127.0.0.1 -p2.切换数据库 use mysql3.授权grant all
- 先下载:http://signup.qq.com/js/a.js用 IntelliJ IDEA 格式化代码:var naa = true;O
- 一、FFmpeg 多个音频合并的2种方法多个mp3文件合并成一个mp3文件一种方法是连接到一起ffmpeg64.exe -i "c
- reflow是个神奇的东西,之前Realazy说到过这个reflow,我摘出其中的重点:在CSS规范中有一个渲染对象的概念,通常用一个盒子(
- 早上一开Google Reader,发现已经全部被Silverlight 3的消息占领了,基本上都来自于Silverlight
- 触发器是一种特殊的存储过程,触发器主要是通过事件进行触发而被自动调用执行,而存储过程必须通过存储过程的名称被调用。一、触发器的定义触发器是在
- 1 介绍在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况。一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身
- 用read_csv读数据遇到分隔符问题的两种解决方式import pandas as pd1.更改read_csv函数中的传参&ld
- 日期包常用函数time.Now(): 获取当前时间package mainimport ( "fmt&q
- 概述微服务是一种思想,与编程语言无关,编程语言是思想下具体的一种实现方式,怎么设计架构方案和实现主要看主要面临的业务场景。业务场景主站核心业
- 下面和大家分享一下具体的实现过程。HTML标签结构:<ul class="animation_menu">&
- 因此,我们主要解决的思路是效验session ID的有效性. 以下为引用的内容: <?php if(!isset($_SESSION[
- 注:以下所有操作都在CentOS 6.5 x86_64位系统下完成。#准备工作#在安装MySQL之前,请确保已经使用yum安装了以下各类基础
- Python复合语句复合语句是包含其它语句(语句组)的语句;它们会以某种方式影响或控制所包含其它语句的执行。通常,复合语句会跨越多行,虽然在
- Python中进行Base64编码和解码要用base64模块,代码示例:#-*- coding: utf-8 -*-import base6
- 爬虫简介 根据百度百科定义:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社