mysql 分析查询语句,MySQL教程之SQL语句分析查询优化

18328ca475ad3c8827071a543e0a8e90.png

怎么获取有功能问题的SQL

1、经过用户反应获取存在功能问题的SQL

2、经过慢查询日志获取功能问题的SQL

3、实时获取存在功能问题的SQL

运用慢查询日志获取有功能问题的SQL

首要介绍下慢查询相关的参数

1、slow_query_log 发动定制记载慢查询日志

设置的办法,能够经过MySQL指令行设置set global slow_query_log=on

或许修正/etc/my.cnf文件,增加slow_query_log=on

2、slow_query_log_file 指定慢查询日志的存储途径及文件

主张日志存储和数据存储分隔存储

3、long_query_time 指定记载慢查询日志SQL履行时刻的阈值

① 记载一切契合条件的SQL

② 数据修正句子

③ 包含查询句子

④ 现已回滚的SQL

留意:

时刻能够精确到微秒,存储的单位是秒,默许值为10秒,例如咱们想查询1微秒的值,这儿就要设置成0.001秒

4、log_queries_not_using_indexes 是否记载未运用索引的SQL

5、log_output 设置慢日志查询的保存格局(假如需求保存为文件请修正成FILE)

慢查询运用日志中记载的信息

1、榜首行记载的信息为运用sbtest做的测验

2、第二行记载的信息为慢查询日志的时刻

3、第三行记载的信息为所运用锁的时刻

4、第四行记载的信息为回来的数据行数

5、第五行记载的信息为扫描数据的行数

6、第六行记载的信息为时刻戳

7、第七行记载的信息为查询的SQL句子

运用慢查询获取有功能问题的SQL

常运用的慢查询日志剖析东西(mysqldumpslow)

介绍:汇总除查询条件外其他完全相同的SQL,并将剖析成果依照参数中所指定的次序输出

慢查询日志实例

慢查询的相关装备设置

指令行履行参数检查剖析的成果

]# cd /var/lib/mysql/log]# mysqldumpslow -s r -t 10 slow-mysql

常运用的慢查询日志剖析东西(pt-query-digest)

运用东西前,需求先装置该东西,假如已有,可略过下面的装置进程

1、perl模块

]# yum install -y perl-CPAN perl-Time-HiRes perl-IO-Socket-SSL perl-DBD-mysql perl-Digest-MD5

2、切换至src目录下载rpm包

]# cd /usr/local/src

]# wget https://www.percona.com/downloads/percona-toolkit/3.0.7/binary/redhat/7/x86_64/percona-toolkit-3.0.7-1.el7.x86_64.rpm

3、装置东西包

]# rpm -ivh percona-toolkit-3.0.7-1.el7.x86_64.rpm

履行指令剖析慢查询日志

]# pt-query-digest --user=root --password=redhat --host=127.0.0.1 slow-mysql > slow.rep

剖析的成果如下

MySQL服务器处理查询恳求的整个进程

1、客户端发送SQL恳求给服务器

2、服务器检查是否存在在缓存服务器中射中该SQL

3、服务器端进行SQL解析,预处理,再由优化器对应履行计划

4、依据履行计划,调用存储引擎API来查询数据

5、将成果回来给客户端

查询缓存对SQL功能的影响

1、优先检查整个查询是否射中查询缓存中的数据

2、经过一个对大小写灵敏的哈希查找完成的

查询缓存的优化参数

query_cache_type 设置查询缓存是否可用

ON,OFF,DEMAND

留意:DEMAND表明只要在查询句子中运用SQL——CACHE和SQL_NO_CACHE来操控是否需求缓存

query_cache_size 设置查询缓存的内存大小

query_cache_limit 设置查询缓存可用存储的最大值

query_cache_wlock_invalidate 设置数据表被锁后是否回来缓存中的数据(默许是封闭的,主张也是封闭的此选项)

query_cache_min_res_unit 设置查询缓存分配的内存块最小的值

会形成MySQL生成过错的履行计划的原因

1、计算信息不精确

2、履行计划中的本钱预算不等同于实践的履行计划的本钱

3、MySQL优化器所以为的最优可能与你所以为的最优不一样

4、MySQL从不考虑其他并发的查询,这可能会影响当时查询数据

5、MySQL有时候也会依据一些固定的规矩来生成履行计划

6、MySQL不会考虑不受其操控的本钱

MySQL优化器可优化的SQL类型

1、从头界说表的相关次序

优化器会依据计算信息来决议表的相关次序

2、将外链接转换成内衔接

where条件和库表结构等

3、运用等价改换规矩

(5=5 and a > 5)将会被改写成 a > 5

4、优化count(), min()和max()

select tables optimized away

优化器现已从履行计划中移除了该表,并以一个常数取而代之

5、将一个表达式转换为常数表达式

6、运用等价改换规矩

7、子查询优化

8、对in()条件进行优化

怎么确认查询处理各个阶段所耗费的时刻

运用profile set profiling = 1;

履行查询: showprofiles; show profile forqueryN; 查询的每个阶段所耗费的时刻

运用profile检查句子所耗费的时刻

特定的SQL查询优化

1、运用主从切换的原理进行大表的表结构修正,例如,现在从服务器上修正,修正结束今后,进行主从切换,再在本来老的主上进行大表的修正,存在必定的危险。2、在主服务器上创建于一个新的表,表结构便是即将修正大表后表结构,再把老表的数据从头导入到新表中,并在老表中树立一系列的触发器,把老表的数据同步更新到新表中,当老表中的数据悉数同步到新表今后,再对老表加排它锁,把新表改成老表的称号,删去重命名的老表,如下图所示

运用pt-online-schema-change指令来修正大表,具体操作如下图所示

上图的参数解说

--alter 所运用的sql句子

--user 数据库的登录用户

--password 登录用户的暗码

D 指定一切修正表的数据库称号

t 表的称号

--charset 指定数据库的字符串

--excute 履行

作者:demon_gdy

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

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

相关文章

树莓派摄像头基础配置及测试

树莓派摄像头基础配置 step 1 硬件连接 硬件连接,注意不要接反了,排线蓝色一段朝向网口的方向。(笔者的设备是树莓派4B) step 2 安装raspi-config 安装 raspi-config raspi-config在raspbian中是预装的,而在kali、…

使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版

硬件 树莓派4B一个CSI摄像头一个 笔者使用的是树莓派4B和CSI摄像头,但是树莓派3和USB摄像头等相似设备均可。 百度云智能设置 Step 1 登录 百度云智能 网址https://cloud.baidu.com/ 首先登录百度账号,与百度云、百度贴吧等互通,可直接…

xp搭建 php环境,windows xp 下 LAMP环境搭建

1. apache安装步骤如下图在浏览器中输入:localhost,出现下面页面说明已成功安装apache。2. mysql安装如下图显示在运行里面输入cmd ,然后连接测试mysql ,如图所示:3. php安装(1)将php压缩包解压到安装路径中的php目录…

C++中的虚函数(表)实现机制以及用C语言对其进行的模拟实现

C中的虚函数(表)实现机制以及用C语言对其进行的模拟实现 声明:本文非博主原创,转自https://blog.twofei.com/496/,博主读后受益良多,特地转载,一是希望好文能有更多人看到,二是为了日后自己查阅。 前言 …

C++中数组和指针的关系(区别)详解

C中数组和指针的关系(区别)详解 本文转自:http://c.biancheng.net/view/1472.html 博主在阅读后将文中几个知识点提出来放在前面: 没有方括号和下标的数组名称实际上代表数组的起始地址,这意味着数组名称实际上就是…

安装php独立环境,0507-php独立环境的安装与配置 Web程序 - 贪吃蛇学院-专业IT技术平台...

1.在一个纯英文目录下新建三个文件夹2.安装apache(选择好版本)过程中该填的按格式填好,其余的只更改安装目录即可如果报错1901是安装版本的问题。检查:安装完成后localhost打开为It works!添加到电脑属性环境变量:3.将php文件解压文档放到AMP…

linux中PATH变量-详细介绍

转自:https://blog.csdn.net/haozhepeng/article/details/100584451 转载者勘误 原文最后提到的 echo 命令对于环境变量的修改无影响。这是肯定的,echo 命令相当于只是一个打印的函数(比如 Python 中的 print)。这里要修改环境变…

php assert eval,代码执行函数之一句话木马

前言大家好,我是阿里斯,一名IT行业小白。非常抱歉,昨天的内容出现瑕疵比较多,今天重新整理后再次发出,修改并添加了细节,另增加了常见的命令执行函数如果哪里不足,还请各位表哥指出。eval和asse…

显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理

显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理 转自:https://www.cnblogs.com/marsggbo/p/11838823.html#nvccnvidia-smi GPU型号含义 显卡: 简单理解这个就是我们前面说的GPU,尤其指NVIDIA公司生产的GPU系列,因为后面介绍的…

VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决

VS Code的Error: Running the contributed command: _workbench.downloadResource failed解决 转自:https://blog.csdn.net/ibless/article/details/118610776 1 问题描述 此前,本人参考网上教程在VS Code中配置了“Remote SSH”插件(比如这…

Oracle闪回报错,oracle 闪回区满了,ORA-19815

oracle 闪回区满了,查看日志报错:ORA-19815,命令行输入:sqlplus / as sysdbastartup mount //如果你的数据库出现了无法连接的情况时,可以加上这句select file_type, percent_space_used as used,percent_space_rec…

[2021-ICCV] MUSIQ Multi-scale Image Quality Transformer 论文简析

[2021-ICCV] MUSIQ: Multi-scale Image Quality Transformer 论文简析 论文:https://arxiv.org/abs/2108.05997 代码:https://github.com/google-research/google-research/tree/master/musiq 概述 当前SOTA的IQA(图像质量评估&#xff0…

安装oracle不动了,windows2008安装ORACLE到2%不动的问题 | 信春哥,系统稳,闭眼上线不回滚!...

最近又有网友遇到在windows2008服务器上安装ORACLE软件时到2%就卡住不动的问题,下面是该网友的描述:oralce 11g r2 windows server 2008 R2安装到最后一步复制数据文件时卡到2% 不走了内存一直飙升求解决这个问题前段时间也有人遇到过,但是他…

手把手教你入门Git --- Git使用指南(Linux)

手把手教你入门Git — Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对git有一个初步的了解,应当能做到会用并…

php数据关系图,如何利用navicat查看数据表的ER关系图

文章背景:(相关推荐:navicat)由于工作需要,现在要分析一个数据库,然后查看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图。默认情况下,Navicat显示的界面是这样的&…

Linux中g++与gcc的区别

转自:https://blog.csdn.net/bit_clearoff/article/details/53965514 Windows中我们常用vs来编译编写好的C和C代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢&#…

从C源代码到可执行文件的四个过程:预处理、编译、汇编、链接

从C源代码到可执行文件的四个过程:预处理、编译、汇编、链接 总览 我们将在Linux操作系统中,以C语言的Hello World程序为例,用gcc编译器分步执行这四个步骤。 我们有再熟悉不过的HelloWorld程序,hello.c: #include …

linux内核中cent文件夹,Centos 中如何快速定制二进制的内核 RPM 包

1、rpm 制作前的环境准备:yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel bc2、准…

TabError- inconsistent use of tabs and spaces in indentation 查验及解决方法

TabError: inconsistent use of tabs and spaces in indentation 查验及解决方法 报错代码 def eccv16(pretrainedTrue):model ECCVGenerator()if(pretrained):import torch.utils.model_zoo as model_zoomodel.load_state_dict(torch.load(/home/ps/.cache/torch/hub/check…

linux用xshell编辑文件,Linux远程管理器xshell和xftp使用教程

Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xftp 是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。安装完毕后打开xshell设置网站帐号信息设置主机信息设置服务器帐号设置字符集编码设置好了…