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

MySql缓存查询原理与缓存监控 And 索引监控

by:授客 QQ1033553122

 

查询缓存

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.

 

参考连接:

http://dev.mysql.com/doc/refman/4.1/en/query-cache-operation.html

 

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

SHOW VARIABLES LIKE 'have_query_cache';

MySql <wbr>缓存查询原理与缓存监控 <wbr>和 <wbr>索引监控

 

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

RESET QUERY CACHE;

 

4.查询缓存性能监控

SHOW STATUS LIKE 'Qcache%'

MySql <wbr>缓存查询原理与缓存监控 <wbr>和 <wbr>索引监控

输出说明:

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%';

MySql <wbr>缓存查询原理与缓存监控 <wbr>和 <wbr>索引监控

输出说明:

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.

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

参考连接:

http://dev.mysql.com/doc/refman/5.7/en/dynindex-statvar.html#statvar-index-H

 

参考连接:

http://dev.mysql.com/doc/refman/4.1/en/server-status-variables.html

http://dev.mysql.com/doc/refman/4.1/en/query-cache-status-and-maintenance.html

 


转载于:https://www.cnblogs.com/shouke/p/10157911.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1354):集合关联

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败)) const userSchema new mongoose.Schema({name: {type:…

ati jti jwt 和_一文搞懂JWT

Django REST framework JWT一、JWT简介二、JWT 组成headersignature三.使用手动生成jwt前端保存jwt一、JWT简介JWT(Json Web Token) 是一个开放标准(RFC 7519)&#xff0c;它定义了一种用于简洁&#xff0c;自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。JWT…

前端学习(1355)模板语法循环

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 03.art); const html template(views, {users: [{name: geyao,age: 20,sex: 男}, {name: xiao,age: 20,sex: 男}, {name: hau,age: 20,se…

c++检测ip是否匹配子网掩码_网络工程师从入门到精通通俗易懂系列 | ARP和IP这篇文章讲的相当详细了,这么基础的知识往往也是最容易遗忘的!...

网络层负责将报文从源送到目的包括TCP建立连接&#xff0c;也需要依靠网络层&#xff0c;来将这个连接请求&#xff0c;传递到对方。为设备提供逻辑地址&#xff0c;也就是IP地址主流是IPV4地址IPV4地址&#xff0c;为32位二进制数&#xff0c;长度4个字节&#xff0c;1字节等于…

前端学习(1357) :模板配置

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 07.art); const dateFormat require(dateFormat) template.defaults.imports.dateFormat dateFormat; const html template(views, {ti…

使用Office Word 2010/2013 发布文章到博客园

使用Office Word 2010/2013 发布文章到博客园 ☆&#xff1a;参考http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html&#xff1b; 软件准备&#xff1a;Office Word2010/2013 初次使用&#xff0c;必要的配置&#xff1a; Office Word2010&#xff1a;代开wor…

前端学习(1355) 子模板

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path); const views path.join(__dirname, 04.art); const html template(views, {msg: 我是首页,name: geyao,age: 20 }); console.log(html); 04.art {{include./index.art}} {…

前端学习(1358) :渲染模板默认

const template require(art-template); //绝对路径 模板中显示的数据 const path require(path);const dateFormat require(dateFormat) template.defaults.imports.dateFormat dateFormat; template.defaults.root path.join(__dirname); template.defaults.extname .a…

UML九种图 之 包图和对象图

前言 对象图和包图依然是对系统的静态的描写叙述。UML九种图加上包图&#xff0c;事实上是十幅图。 包图 1.构成 2.包中的元素 类、接口、用例、构件、其他包等。&#xff08;若包被撤销&#xff0c;当中的元素被撤销&#xff09; 3.包之间的关系 泛化、细化、依赖&#xff08;…

前端学习(1359) :学生档案信息管理1

\ service.js //引入http模块 const http require(http); //创建网站服务器 const app http.createServer(); // require(./connect.js) const Student require(./user.js) app.on(request, (req, res) > {res.end(ok); }); app.listen(3000); console.log(服务器启动成…

刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!

1、关于场景&#xff0c;即scene。 一个正常的游戏至少要有三个场景&#xff0c;即菜单&#xff08;或者文件夹&#xff09;场景、游戏关卡场景、游戏结束场景。它们一般统一放在project文件夹下scene文件夹&#xff08;自己创建&#xff09;中&#xff0c;方便管理。1.1场景切…

不学好css模型的怎么入山门?师傅与徒弟的真实独白

目录 前言 开篇 定义 ie盒 标准盒 真实占有宽度 结局 前言 很久很久以前&#xff0c;在一个小山庄里面住着一位少年。这位少年出生之时天有异向&#xff0c;七星连珠&#xff0c;乃神人也。三岁那年他跟着师傅上山学艺&#xff0c;面临这人生的第一道关卡。这位少年我们…

看完这篇还不知道css固定和自适应可以小和尚要摆地摊了

目录 前言 开篇 左右侧采用浮动 中间采用margin-left 和 margin-right 方法。 中篇 利用绝对定位中间同样采用margin-left margin-right方法 续篇 负的margin 终篇 三列布局中间固定&#xff0c;其他两列自适应 前言 接上一篇的小徒弟继续说吧 上一篇小徒弟进入山门…

classpass 配置mysql_jmeter压测学习18-JDBC配置连接mysql数据库

前言使用jmeter压测接口的时候&#xff0c;有时候需要批量造数据&#xff0c;需使用jmeter连数据库造对应的测试数据。或者测试结束后&#xff0c;对测试的数据还原&#xff0c;删掉一些垃圾数据&#xff0c;都会用到连接数据库执行sql的操作。JDBC 连接配置添加配置元件-JDBC …

为了梦想开始历练之清除浮动篇

目录 前言 开篇 中篇 原因 解决方式 1额外标签得方法 2触发BFC overflow 3伪元素 4双伪元素 结尾 前言 师傅&#xff08;路人甲&#xff09;小徒弟&#xff08;路人乙&#xff09;,自从路人乙昨晚没有被叫去摆地摊之后。早上一起床 路人甲:徒儿&#xff0c;昨晚休…

这篇看完我得理解ES6中中常见语法

目录 前言 1let篇 1.1作用域 1.2变量提升 1.3相同作用域赋值 2const篇 3模板字符串篇 3.1传统 3.2模板字符串复制 4扩展运算符篇 4.1传统赋值 4.2扩展字符串复制 前言 ES6是前端面试中常考查得知识点&#xff0c;还请大家不断得去琢磨琢磨 let篇 <!DOCTYPE h…

django本地安装mysql_django使用mysql(本地环境下)_MySQL

事例使用的django版本是1.4.0(最近在使用sae&#xff0c;没办法&#xff0c;只好从1.7.1撤了回来)。不过原理大概都是相仿的吧。django支持多种数据库管理工具&#xff0c;如mysql, postgresql, sqlite, 和oracle。其中sqlite是内置在python中的&#xff0c;所以如果使用sqlite…

前端学习(1360) :学生档案信息管理2

service.js //引入http模块 const http require(http); //创建网站服务器 const app http.createServer(); //引入路由 const getRouter require(router);const router getRouter();router.get(/test, (req, res) > {res.end(test) }) router.get(/index, (req, res) &…

mac 上mysql_connect_Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)...

说明:1. 运行环境: Mac OS X 10.11.4 (Mac 已经自带 Apache, PHP)2. 相关文件夹:/etc/apache2/ ##Apache 配置文件夹/Library/WebServer/Documents/ ##Apache 默认站点/usr/local/mysql-5.7.11-osx10.9-x86_64 ##mysql安装路径/private/php.ini.default ##php…

Android - 基于Toolbar的Navigation Drawer(Material Design)

Material Design已经推出许久&#xff0c;有许多app都已经跟进了&#xff0c;这里也介绍下基于Toolbar的Navigation Drawer是如何实现的。 样式&#xff1a;实现过程&#xff1a;1. 在 activity_asdemo.xml 中加入 DrawerLayout  <android.support.v4.widget.DrawerLayout …