mysql 缓冲查询_MySQL查询高速缓冲
可以在SELECT语句中指定查询缓存相关选项:
·
SQL_CACHE
如果query_cache_type系统变量的值是ON或DEMAND,查询结果被缓存。
·
SQL_NO_CACHE
查询结果不被缓存。
示例:
SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;
5.13.3. 查询高速缓冲配置
通过have_query_cache服务器系统变量指示查询缓存是否可用:
mysql>SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
即使禁用查询缓存,当使用标准 MySQL二进制时,这个值总是YES。
其它几个系统变量控制查询缓存操作。当启动mysqld时,这些变量可以在选项文件或者命令行中设置。所有查询缓存系统变量名以query_cache_
开头。它们的详细描述见5.3.3节,“服务器系统变量”,还给出了额外的配置信息。
为了设置查询缓存大小,设置query_cache_size系统变量。设置为0表示禁用查询缓存。
默认缓存大小设置为0;也就是禁用查询缓存。
当设置query_cache_size变量为非零值时,应记住查询缓存至少大约需要40KB来分配其数据结构。(具体大小取决于系统结构)。如果你把该值设置的太小,将会得到一个警告,如本例所示:
mysql> SET GLOBAL
query_cache_size = 40000;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW
WARNINGS\G
*************************** 1. row
***************************
Level: Warning
Code: 1282
Message: Query cache failed to set size 39936; new query
cache size is 0
mysql> SET GLOBAL
query_cache_size = 41984;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE
'query_cache_size';
+------------------+-------+
|
Variable_name | Value |
+------------------+-------+
| query_cache_size | 41984 |
+------------------+-------+
如果查询缓存大小设置为大于0,query_cache_type变量影响其工作方式。这个变量可以设置为下面的值:
·
0或OFF将阻止缓存或查询缓存结果。
·
1或ON将允许缓存,以SELECT
SQL_NO_CACHE开始的查询语句除外。
·
2或DEMAND,仅对以SELECT
SQL_CACHE开始的那些查询语句启用缓存。
设置query_cache_type变量的GLOBAL值将决定更改后所有连接客户端的缓存行为。具体客户端可以通过设置query_cache_type变量的会话值控制它们本身连接的缓存行为。例如,一个客户可以禁用自己的查询缓存,方法如下:
mysql> SET SESSION
query_cache_type = OFF;
要控制可以被缓存的具体查询结果的最大值,应设置query_cache_limit变量。
默认值是1MB。
当一个查询结果(返回给客户端的数据)从查询缓冲中提取期间,它在查询缓存中排序。因此,数据通常不在大的数据块中处理。查询缓存根据数据排序要求分配数据块,因此,当一个数据块用完后分配一个新的数据块。因为内存分配操作是昂贵的(费时的),所以通过query_cache_min_res_unit系统变量给查询缓存分配最小值。当查询执行时,最新的结果数据块根据实际数据大小来确定,因此可以释放不使用的内存。根据你的服务器执行查询的类型,你会发现调整query_cache_min_res_unit变量的值是有用的:
·
query_cache_min_res_unit默认值是4KB。这应该适合大部分情况。
·
如果你有大量返回小结果数据的查询,默认数据块大小可能会导致内存碎片,显示为大量空闲内存块。由于缺少内存,内存碎片会强制查询缓存从缓存内存中修整(删除)查询。这时,你应该减少query_cache_min_res_unit变量的值。空闲块和由于修整而移出的查询的数量通过Qcache_free_blocks和Qcache_lowmem_prunes变量的值给出。
·
如果大量查询返回大结果(检查
Qcache_total_blocks和Qcache_queries_in_cache状态变量),你可以通过增加query_cache_min_res_unit变量的值来提高性能。但是,注意不要使它变得太大(参见前面的条目)。
mysql 缓冲查询_MySQL查询高速缓冲相关推荐
- mysql 性能查看_MySQL查询性能问题排查
Mysql数据库的性能问题排查是十分复杂的,具体方法视场景而定,这里只做大致思路分析. 1. 整体考虑导致查询性能低下的各种因素 导致SQL查询变慢的原因是多元化的,在遇到问题时首先要有一个全方位的思 ...
- mysql求和 子查询_MYSQL 查询方法 统计查询 链接查询 子查询
mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据 select Code,Name from Info --查指定列的数据 select Code ...
- 在mysql中通配符_mysql查询中通配符的使用
mysql查询中通配符的使用 在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: "_& ...
- mysql 廖雪峰_mysql查询(廖雪峰sql教程学习摘录)
mysql默认不区分大小写 条件查询 select * from students ...
- mysql 严格区分大小写_Mysql查询英文如何严格区分大小写?
1. 前提: 在Mysql数据库中进行查询时,希望英文严格区分大小写.默认情况下是不区分大小写的. 2. 演示如下: 在数据库表emp中,job字段中存储的值有'Engineer',现在的情况是,下面 ...
- 怎么查mysql数据库版本信息查询_mysql 查询版本(mysql查询数据库版本信息)
mysql 查询版本(mysql查询数据库版本信息) 2020-07-24 11:32:43 共10个回答 1.通过mysql的-V参数查询版本信息mysql-V2.登录mysql时可以查询版本信息m ...
- mysql 查找数据_Mysql查询数据
查询语句 单表查询 1.1 全表查寻 select * from employee; 复制代码1.2 指定字段查询 查询职员表中所有职员姓名和入职时间 select empname,hirdate f ...
- mysql 语句检查_mysql查询语句
一.简单查询 1.最简单查询(查所有数据) select * from 表名 注意:* 代表所有列,并不是代表所有行 例:select * from test 2.查询指定列 select 列名, ...
- mysql 前索引_MySQL查询性能优化前,必须先掌握MySQL索引理论
数据库索引在平时的工作是必备的,怎么建好索引,怎么使用索引,可以提高数据的查询效率.而且在面试过程,数据库的索引也是必问的知识点,比如: 索引底层结构选型,那为什么选择B+树? 不同存储引擎的索引的体 ...
最新文章
- 被Python「苦虐」的日子太惨了!
- Less 常用基础知识
- 在Linux下gcc缺省编译,在Linux下GCC将文件合起来编译
- 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )
- ios-NSMutableAttributedString 更改文本字符串颜色、大小
- NYOJ 240 小明的调查统计(二)
- 微信WeixinJSBridge API
- 基于TableStore构建简易海量Topic消息队列
- GPU事务性内存技术研究
- [Android5 系列—] 2. 开始另外一个活动
- 【软件工程】第一次阅读作业
- 云计算之Docker
- Tensorflow笔记:神经网络优化
- matlab色度椭圆,matlab画色度图
- gwt执行ajax,使用GWT开发AJAX应用程序
- 云台山风景区茶园骑共享单车,游玩茶园的每一个角落
- python打包flask项目exe
- 大疆产品上岸经验分享
- 梁宁——用户体验地图和用户故事(阅读总结)
- 有没有html代码听力的软件吗,英语听力软件哪个好?2017英语听力软件排行榜