MySql缓存查询原理与缓存监控

And 索引监控

by:授客

QQ:1033553122

查询缓存

1.查询缓存操作原理

mysql执行查询语句之前,把查询语句同查询缓存中的语句进行比较,且是按字节比较,仅完全一致才被认为相同。如下,这两条语句被视为不同的查询

SELECT

* FROM tb1_name

Select

* from tb1_name

1)不同数据库、不同协议版本,或字符集不同的查询被视为不同的查询并单独缓存。

2)以下两种类型的查询不被缓存

a.预处理语句

b.嵌套查询的子查询

3)从查询缓存抓取查询结果前,mysql检查用户对查询涉及的所有数据库和表是否有查询权限,如果没有则不使用缓存查询结果。

4)如果从缓存查询返回一个查询结果,服务器递增Qcache_hits状态变量,而不是Com_select

5)如果表改变,所有使用了该表的缓存查询变成不合法,从缓存移除。表可能被多种类型的语句改变,比如INSERT,

UPDATE, DELETE, TRUNCATE TABLE, ALTER TABLE, DROP TABLE,

或DROP

DATABASE.

参考连接:

2.查看是否开启了缓存查询

SHOW VARIABLES LIKE 'have_query_cache';

3.从查询缓存中移除所有查询缓存

RESET QUERY CACHE;

4.查询缓存性能监控

SHOW STATUS LIKE 'Qcache%'

输出说明:

Qcache_free_blocks:查询缓存中的空闲内存块

Qcache_free_memory:查询缓存的空闲内存数量

Qcache_hits:查询缓存命中数量

Qcache_inserts:添加到查询缓存的查询的数量(不是表示没被缓存而进行的读,而是缓存失效而进行的读)

Qcache_lowmen_prunes:因内存太低,从缓存查询中删除的查询的数量

Qcache_not_chached:未缓存查询的数量(未被缓存、因为querey_cache_type设置没被缓存)

Qcache_queries_in_cache:缓存查询中注册的查询的数量

Qcache_total_blocks:查询缓存中的内存块总数

SELECT查询总数:

Com_select+Qcache_hits+ 解析错误的查询数(queries

with errors found by parser)

其中,Com_select表示未命中缓存数,Qcache_hits表示缓存命中数

Com_select计算公式:

Qcache_inserts+Qcache_not_cached+权限检查错误数(queries

with errors found during the column-privileges check)

索引监控

SHOW

STATUS LIKE 'handler_read%';

输出说明:

Handler_read_first

The

number of times the first entry in an index was read. If this value

is high, it suggests that the server is doing a lot of full index

scans; for example, SELECT col1 FROM foo, assuming that col1 is

indexed

索引中的第一项(the

first entry in an index)被读取的次数,如果该值很高,那表明服务器正在执行很多全索引扫描,例如

SELECT col1 FROM foo, 假设col1上建立了索引

Handler_read_key

The

number of requests to read a row based on a key. If this value is

high, it is a good indication that your tables are properly indexed

for your queries.

基于某个键读取一行的请求次数。如果该值很高,那很好的说明了,对于执行的请求,表采用了适当的索引。

Handler_read_next

The

number of requests to read the next row in key order. This value is

incremented if you are querying an index column with a range

constraint or if you are doing an index scan.

根据键顺序,读取下一行的请求次数。如果你正在查询一个带一系列约束的索引列或者正在执行索引扫描时,该值会增加

Handler_read_prev

The

number of requests to read the previous row in key order. This read

method is mainly used to optimize ORDER BY ... DESC

根据键的顺序,请求读取前一行的次数。该读取方法主要用于优化 ORDER BY ... DESC

Handler_read_rnd

The

number of requests to read a row based on a fixed position. This

value is high if you are doing a lot of queries that require

sorting of the result. You probably have a lot of queries that

require MySQL to scan entire tables or you have joins that do not

use keys properly.

在固定位置读取一行的请求次数。该值如果很高,那么说明正在执行许多要求对结果集排序的查询。可能在执行有许多要求全表扫描的查询,或没使用适合键的联合查询。

Handler_read_rnd_next

The

number of requests to read the next row in the data file. This

value is high if you are doing a lot of table scans. Generally this

suggests that your tables are not properly indexed or that your

queries are not written to take advantage of the indexes you

have.

读取数据文件中下一行的请求次数。该值很高,表明正在执行很多全表扫描。通常表明表没使用适当的索引或者查询请求没利用现成的索引。

参考连接:

参考连接:

mysql 缓存监控_MySql 缓存查询原理与缓存监控 和 索引监控相关推荐

  1. MySql 缓存查询原理与缓存监控 和 索引监控

    MySql缓存查询原理与缓存监控 And 索引监控 by:授客 QQ:1033553122 查询缓存 1.查询缓存操作原理 mysql执行查询语句之前,把查询语句同查询缓存中的语句进行比较,且是按字节 ...

  2. mysql php 缓存机制_mysql数据库查询缓存原理是什么

    mysql数据库查询缓存原理是:1.缓存SELECT操作的结果集和SQL语句,key为sql,value为查询结果集:2.如果新的SELECT语句到了,以这个sql为key去缓存中查询,如果匹配,就把 ...

  3. mysql查找 提速_MySQL加速查询速度的独门武器:查询缓存

    [导读] 与朋友或同事谈到mysql查询缓存功能的时候,个人喜欢把Query Cache比作荔枝,是非常营养的东西,但是一次性吃太多了,就容易导致上火而流鼻血,虽然不是特别恰当的比喻,但是有很多相似的 ...

  4. mysql写缓冲_MySQL 数据库的提速器-写缓存(Change Buffer)

    写缓存(Change Buffer) 是一种特殊的数据结构,用于在对数据变更时,如果数据所在的数据页没有在 buffer pool 中的话,在不影响数据一致性的前提下,InnoDB 引擎会将对数据的操 ...

  5. mysql续型_mysql续集(查询部分)

    mysql> select goods_name,goods_id, concat("HTC",substring(goods_name,4)) as name from g ...

  6. 宝塔mysql慢日志_MySQL慢查询日志总结

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  7. mysql进度查看_MySQL长查询进度监控

    只是为了说明我的问题,我知道没有直接支持这样的东西.我所寻找的是任何类型的解决方法,或复杂的派生,这将得到一个令人尊敬的结果. 我正在使用一个相当大的MySQL集群(表> 4亿行)使用集群引擎. ...

  8. mysql 字符串分区_Mysql分区表的原理和优缺点

    分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表 ...

  9. mysql 二元分词_MySQL 中文分词原理

    一,首先我们来了解一下其他几个知识点: 1. Mysql的索引意义? 索引是加快访问表内容的基本手段,尤其是在涉及多个表的关联查询里.当然,索引可以加快检索速度,但是它也同时降低了索引列的插入,删除和 ...

最新文章

  1. linux egg,Linux服务器部署egg,日志
  2. 详解AFNetworking的HTTPS模块
  3. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点
  4. 停课不停学 阿里云天池免费开放AI实训平台
  5. eclipse导入github项目提示没有发现项目_eclipse clone克隆github远程库工程到本地
  6. 如何获得Windows聚焦壁纸0726
  7. PLSQL Developer工具远程连接Oracle数据库的方法
  8. zabbix-自定义监控项
  9. js map的get 和list比 那个快_js中let和var
  10. [转载]ASP.NET-----Repeater数据控件的用法总结
  11. LINUX下载编译libsrtp-1.5.0
  12. 超高频手持机怎样选择才适合工作呢
  13. hyperterminal停止工作_hyper terminal超级终端最新下载
  14. Docker服务以及容器如何设置自动启动
  15. 计算机网络选择公用还是家庭,如何设置打印机共享?
  16. android前端开发
  17. PAT1150 Travelling Salesman Problem
  18. linux制作deepin启动盘制作工具,深度启动盘制作工具(Deepin Boot Maker)
  19. 图形化编程与python的区别_计算机编程启蒙为什么要选图形化编程和python
  20. 1、基于Keras、Mnist手写数字识别数据集构建全连接(FC)神经网络训练模型

热门文章

  1. SAP Analytics Cloud model数据的转置功能
  2. 如何在SAP Fiori应用里使用React component
  3. SAP FSM 学习笔记(二) : SAP FSM的微信接入
  4. hybris impex里的多语言处理语法
  5. SAP OData:callbackend entry point - iwfndcl_mgw_request_manager~read_entity
  6. SAP WebIDE里OData service catalog的实现原理
  7. Sequence of component save EC and orderadm_h save
  8. C4C的Rich text editor的JavaScript实现
  9. SAP Marketing Cloud的技术架构
  10. There is no tracking information for the current branch