MySQLSQL语句分析查询优化,需要的朋友可以参考下

xzdxmynet 发布于 2024-01-26 阅读(91)

MySQL SQL语句分析及查询优化详解

更新时间:2018年3月06日 22:53:41 作者:

本文主要介绍MySQL SQL语句分析和查询优化。 有需要的朋友可以参考一下。

如何获得有性能问题的SQL

1、通过用户反馈获取存在性能问题的SQL

2、通过慢查询日志获取性能问题的SQL

3.实时获取有性能问题的SQL

使用慢查询日志获取有性能问题的SQL

首先介绍一下慢查询相关的参数。

1.开始定制慢查询日志

设置方法可以通过MySQL命令行set=on。

或者修改/etc/f文件,添加=on

2、指定慢查询日志的存储路径和文件

建议日志存储和数据存储分开存储

3、指定记录慢查询日志SQL执行时间的阈值

① 记录所有符合条件的SQL

② 数据修改声明

③ 包含查询语句

④ 已回滚的SQL

注意:

时间可以精确到微秒。 存储单位为秒。 默认值为 10 秒。 比如我们要查询1微秒的值,我们需要将其设置为0.001秒。

4、是否记录不使用索引的SQL

5、设置慢日志查询的保存格式(如果需要保存为文件,请改为FILE)

慢查询使用日志中记录的信息

1、第一行记录的信息为使用测试

2、第二行记录的信息是慢查询日志的时间。

3、第三行记录的信息是使用的锁定时间

4、第四行记录的信息是返回的数据行数。

5、第五行记录的信息是扫描数据的行数。

6. 第六行记录的信息是时间戳。

7、第七行记录的信息是查询的SQL语句。

使用慢查询获取有性能问题的 SQL

常用的慢查询日志分析工具()

简介:汇总除查询条件外的相同SQL,并按照参数指定的顺序输出分析结果。

慢查询日志示例

慢查询的相关配置设置

命令行执行参数查看分析结果

]# cd /var/lib/mysql/log

]# -sr -t 10 慢-mysql

常用的慢查询日志分析工具(pt-query-)

在使用该工具之前,您需要先安装它。 如果您已经拥有它,则可以跳过以下安装步骤。

1.perl模块

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

2.切换到src目录下载rpm包

]# cd /usr/local/src

]# wget

3. 安装工具包

]# rpm -ivh --3.0.7-1.el7..rpm

执行命令分析慢查询日志

]# pt-query- --user=root --= --host=127.0.0.1 Slow-mysql > Slow.rep

分析结果如下

MySQL服务器处理查询请求的全过程

1.客户端向服务器发送SQL请求

2. 服务器检查SQL是否命中缓存服务器。

3、服务器进行SQL解析和预处理,然后优化器对应执行计划。

4.根据执行计划,调用存储引擎API查询数据

5.返回结果给客户端

查询缓存对 SQL 性能的影响

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

2. 通过区分大小写的哈希搜索来实现

查询缓存优化参数

设置查询缓存是否可用

开关,

注意:表示查询语句中只使用SQL-CACHE 和 来控制是否需要缓存。

设置查询缓存的内存大小

设置可用于查询缓存的最大存储量

设置数据表锁定后是否返回缓存中的数据(默认关闭,建议关闭该选项)

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()

离开

优化器已从执行计划中删除该表并用常量替换它

5. 将表达式转换为常量表达式

6.使用等价变换规则

7.子查询优化

8.优化in()条件

如何确定查询处理各个阶段所花费的时间

使用

设置= 1;

执行查询:

展示 ;

显示查询 N;

查询各阶段所花费的时间

使用视图语句所花费的时间

具体SQL查询优化

1、利用主从切换的原理来修改大表的表结构。 比如现在在从服务器上修改。 修改完成后,进行主从切换,然后修改原master上的大表。 有一定的风险。 。

2. 在主服务器上创建一个新表。 表结构就是修改大表的表结构,然后将旧表的数据重新导入到新表中,并在旧表中创建一系列触发器来将旧表的数据同步到新表中。新表。 将旧表中的数据全部同步到新表后,对旧表加排它锁,将新表更改为旧表的名称,并删除更名后的旧表。 如下所示

sql语句查询优化_sql查询语句优化的实用方法_sql的查询优化

sql的查询优化_sql查询语句优化的实用方法_sql语句查询优化

使用pt ---命令修改大表。 具体操作如下图所示。

上图中参数解释

--更改使用的sql语句

--user 数据库登录用户

-- 登录用户的密码

D 指定所有修改表的数据库名

表名

-- 指定数据库的字符串

- 实施

标签:  查询 日志 缓存 语句 存储 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。