标签:关闭 执行 font 分析工具 sel size 分析 形式 sele
1.1 Explain命令:它可以对select语句进行分析,并输出select执行的详细信息,以对开发人员针对性优化
1.2 Explain的用法:在select语句前面加上explain即可,例如:
1.3explain参数说明
expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、 key、key_len、ref、rows、Extra,下面对这些字段进行解释:
id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.
select_type: SELECT 查询的类型.
table: 查询的是哪个表
partitions: 匹配的分区
type: join 类型
possible_keys: 此次查询中可能选用的索引
key: 此次查询中确切使用到的索引.
ref: 哪个字段或常数与 key 一起被使用
rows: 显示此查询一共扫描了多少行. 这个是一个估计值.
filtered: 表示此查询条件所过滤的数据的百分比
extra: 额外的信息
2.1慢查询介绍
MySQL的慢查询日志功能,默认是关闭的,需要手动开启。
2.2开启慢查询功能
查看是否开启慢查询功能
参数说明:
* slow_query_log :是否开启慢查询日志,ON 为开启,OFF 为关闭,如果为关闭可以开启。
* log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
2.3临时开启慢查询功能
在 MySQL 执行 SQL 语句设置,但是如果重启 MySQL 的话将失效
set global slow_query_log = ON;
set global long_query_time = 1;
2.4永久开启慢查询功能
修改/etc/my.cnf配置文件,重启 MySQL, 这种永久生效.
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
2.5慢日志格式
2.6格式说明:
* 第一行,SQL查询执行的时间
* 第二行,执行SQL查询的连接信息,用户和连接IP
* 第三行,记录了一些我们比较有用的信息,如下解析
Query_time,这条SQL执行的时间,越长则越慢
Lock_time,在MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间
Rows_sent,查询返回的行数
Rows_examined,查询检查的行数,越长就当然越费时间
* 第四行,设置时间戳,没有实际意义,只是和第一行对应执行时间。
* 第五行及后面所有行(第二个# Time:之前),执行的sql语句记录信息,因为sql可能会很长。
3.1介绍
Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方
语句使用:show profile 和 show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情况.
show profiles :以列表形式显示最近发送到服务器上执行的语句的资源使 用情况.显示的记录数由变量:profiling_history_size 控制,默认15条
3.2show file性能展示
4.1合理的创建及使用索引(考虑数据的增删情况)
4.1.1合理的冗余字段(尽量建一些大一点的表,烤炉数据库的三大范式和业务设计的取舍)
4.1.2使用sql要注意一些细节:select语句尽量不要用*,where语句中尽量不要使用1=1、in语句(建议使用exists)、注意组合索引的创建顺序组着查询条件、尽量查询力度大的SQL放到最左边、尽量建立组合索引
4.1.3合理利用
标签:关闭 执行 font 分析工具 sel size 分析 形式 sele
原文地址:https://www.cnblogs.com/959xky/p/12183427.html