索引优化分析(三)

Mysql高级篇(中)—— 索引优化 MySQL索引失效的场景、案例分析及如何优化索引 阅读详情

一、慢查询日志分析

1、定义

        是Mysql提供的一种日志记录,用来记录在Mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL, 则会被记录到慢查询日志中;long_query_time的默认值为10s,SQL语句执行超过10s,则记录下来,在结合explain + sql语句分析。

2、分析/使用步骤

(1)查看是否开启慢查询日志,默认关闭状态 > show variables like '%slow_query_log%'

(2)开启慢查询日志 > set global slow_query_log=1;

(3)慢查询日志参数配置

(1)查看当前多少秒算慢 > show variables like '%long_query_time%'
(2)设置慢查询日志的阙值时间 >set global long_query_time=3

(4)执行sql语句,如查询超过阙值,则记录到慢查询日志文件中,通过查看文件获取sql语句并分析

(5)查询当前系统中有多少条慢查询记录 >show global status like '%Slow_queries%'

3、日志分析工具mysqldumpslow

        给慢查询日志提供了查询相关的命令,方便获取想要的慢查询日记记录信息(mysqldumpslow -help命令说明)

查看mysqldumpslow的帮助信息:

(1)s:表示按照何种方式排序
(2)c:访问的次数
(3)l:锁定时间
(4)r:返回的记录
(5)t:查询时间
(6)al:平均锁定时间
(7)ar:平均返回记录数
(8)at:平均查询时间
(9)t:为返回前面多少条数据
(10)g:后边搭配一个正则匹配模式,大小写不敏感

示范:

(1)得到返回记录集最多的10个sql > mysqldumpslow -s r -t 10 /var/slow-log.log(慢查询日志路径c
(2)得到访问次数最多的10个sql > mysqldumpslow -s c -t 10 /var/slow-log.log
(3)得到按照时间排序的前10里面含有左连接的查询语句 >mysqldumpslow -s t -t 10 -g "left join" var/slow-log.log
(4)建议在使用这些命令时结合|和more使用,否则有可能出现爆屏情况 >mysqldumpslow -s r -t 10 /var/slow-log.log | more

二、Show Profile 

1、定义

        是mysql提供可以用来分析当前会话中的语句执行的资源消耗情况,可以用于SQL的调优的测量,默认的情况下,参数处于关闭的状态,并保存最近15次的运行结果。

2、分析/使用步骤

(1)是否支持,查看当前的mysql版本是否支持 >show variables like '%profiling%'

(2)开启功能,默认为关闭,使用前需要开启 >set profiling=on

(3)运行SQL

(4)查看结果,show profile

(5)诊断SQL,show profile cpu,block io for query number                      -- number:上一步查询出来的数字号码

查询的类型有:
	all:显示所有的开销信息
	block io:显示块io相关开销
	context switches:上下文切换相关开销
	cpu:显示cpu相关开销信息
	ipc:显示发送和接收相关开销信息
	memory:显示内存相关开销信息
	page faults:显示页面错误相关开销信息
	source:显示和source_function,source_file,source_line相关的开销信息
	swaps:显示交换次数相关开销信息

(6)结果分析结论

1、converting HEAP to ondisk:表示查询结果太大,内存都不够用了往磁盘上搬了
2、creating temp table 创建临时表(查询时将结果复制到临时表中,用完在删除)
3、copying to temp table ondisk:把内存中的临时表复制到磁盘中,耗io

三、优化分析总结

(1)开启慢查询日志,设置阙值、捕获慢SQL

(2)explain + 慢SQL分析

(3)show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况

(4)SQL数据库服务器的参数调优

跟着团子学SAP CO:熟练使用结果分析码实现各个场景下收入成本的匹配(一) KKA2/CJ88 PS模块中对财务顾问最难的点在于项目结算,特别是销售型的项目结算。针对客户型项目结算我列举了以下常见的收入成本匹配的一些场景: (1)在项目执行过程中会多次开票,但由于各期成本浮动很大(如前期可能只涉及一些人工、中期全是比较金额较大的材料费),所以希望开票的时候能通过合理的一些指标进行主营业务成本与主营业务收入的匹配。 (2)项目过程中会多次开票,开票确认主营业务收入时,直接将累计发生的实际成本结转为主营业务成本。 (3)项目过程中虽多次开票,但不确认收入,所有发生的实际成本月末计算为在制品,最后项目一次性 阅读详情

相关推荐

【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车

因为MPSOC还有一种启动模式是eMMC,接下来咱就实现从eMMC启动。

ryo891012的博客 474

mysql优化相关

mysql 优化

wurd的博客 670

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1008

MySql优化——观察连接状态

MySQL在优化时候,可以使用show processlist来产看mysql的连接工作状态。为了能够在shell中直接使用这个命令,我们使用mysql -uroot -p123456 -e “show processlist”来代替命令行中的show processlist。 该命令返回的结果大致如下:+----+------+-----------+------------+---------

xusheng__zhang的博客 2468

ChangeMamba训练调试

此仓库的代码是在 Linux 系统下运行的。我们尚未测试是否能在其他操作系统下运行。 首先需要安装VMama仓库。以下安装顺序取自VMama仓库。克隆该版本库并导航至项目目录: 建议设置 conda 环境并通过 pip 安装依赖项。使用以下命令设置环境: 创建并激活新的 conda 环境 安装依赖项 检测和分割任务的依赖库(在 VMamba 中为可选项) 二、下载预训练权重 另外,请下载VMamba-Tiny, VMamba-Small, and VMamba-Base在ImageNet上的预训练权重并把它

hanfeng5268的博客 577

【C++实战(62)】从0到1:C++打造TCP网络通信实战指南

本文是 C++ 网络编程实战专栏第 62 篇,聚焦 TCP 客户端与服务端开发。先阐述 TCP 协议特点、核心 API 及阻塞与非阻塞 IO 区别,打牢基础;再详解 TCP 服务端初始化、客户端连接处理与数据收发,以及客户端初始化、异常处理和协议设计;最后通过简易聊天系统实战,介绍线程池应用、协议解析及稳定性测试,助力开发者掌握 TCP 网络编程实操技能。

邓邓子的博客 999

Mysql Information Schema 学习(一)--通用表

Mysql information Schema 学习(一)--通用表

大魔王 1531

Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建

yocto quick start up带大家快速上手

fulinux的博客 5万+

mysql bytes sent_MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述# Time: 2019-01-24T00:08:14.705724+08:00#User@Host: **[**] @ [**] Id: **#Schema: sentrymeta Last_errno: 0 Killed: 0# Query_time:0.315758 Lock_time: 0.001693 Rows_sent: 9664 Rows_examined: 3...

weixin_35944439的博客 526

SMART200如何实现多次调用子程序带定时器功能

1、西门子200PLC的子程序由于很多限制条件,如果希望建立一个可以多次调用的子程序,那么这个子程序里是不能含有定时器指令的,所以我们只能退而求其次了。建议将沿指令(上升沿、下降沿)放在多次调用子程序的外面。 2、可以提供不同的时基,提供不同时间的定时 3、实现秒定时 5、子程序内部: STL代码: 1、时基信号由外部提供、 可以提供不同的时基信号 2、实现循环定时开关 LD #Start:L0....

RXXW_Dor的博客 1万+

Android影像系统架构专家面试指南

传音控股招聘影像系统架构专家,要求8年以上开发经验,5年架构设计经验,精通Android Camera开发及性能优化。该职位需负责手机影像软件架构设计、技术选型及跨平台适配,重点解决"快稳省"体验优化。面试评估聚焦三大维度:技术方面考察HAL层架构设计、多帧合成优化等能力;系统开发关注低光降噪等场景的算力平衡;团队管理侧重跨部门协作与项目交付。候选人需展现对CamX-CHI等架构的深入理解,具备量化分析性能指标的能力,并能主导旗舰机影像项目全周期落地。

郑伟强dev的专栏 945

mysql线程killed状态_【MySQL】线程状态详解

Aftercreate当线程在创建表的函数末尾创建表(包括内部临时表)时,会发生这种情况。即使由于某些错误而无法创建表,也会使用此状态。Analyzing线程正在计算 MyISAM表键分布(例如,for ANALYZE TABLE)。checking permissions线程正在检查服务器是否具有执行语句所需的权限。Checkingtable该线程正在执行表检查操作。cleaning up该线程...

weixin_34206263的博客 1219

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2130

MySQL高级:双表,三表索引优化分析

目录 一、建表 二、查询语句分析 三、总结 一、建表 建表语句: CREATE TABLE IF NOT EXISTS `class`( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, `card` INT (10) UNSIGNED NOT NULL ); CREATE TABLE IF NOT EXISTS `book`( `bookid` INT(10) UNSIGNED NOT NULL PRIMARY KEY AU

Clawww的学习笔记 422

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MySQL--索引三表优化案例分析

索引三表优化案例分析 在两表的基础上再创建一张表: CREATE TABLE IF NOT EXISTS `phone`( `phoneid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT(10) UNSIGNED NOT NULL, PRIMARY KEY(`phoneid`) )ENGINE = INNODB; INSERT INT...

吴声子夜歌的博客 355

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SQL优化(三)—— 索引、explain分析

一、什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法.这种数据结构,就是索引 一般来说索引本身也很大,不可能全部存储在内存中,因此往往以索引文件的形式存放在磁盘中 我们平常所说的索引,如果没有特别说明都是指BTre...

李斌的BLOG 693

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL索引优化分析(三)

索引优化分析索引优化索引失效(应该避免)一般性建议 索引优化 索引失效(应该避免) 1.全值匹配 2.最佳左前缀法则:如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列 3.不在索引列上做任何操作(计算,函数,(自动or手动)类型转换),会导致索引失效而转向全表扫描 4.存储引擎不能使用索引中范围条件右边的列 5.尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select * 6.mysql在使用不等于(!= 或者 <>)的时候无法使用索引,

weixin_45923962的博客 230

MySQL 高级(四)索引性能分析 索引单表优化 索引两表优化 索引三表优化 索引优化案例 规律 索引面试题分析 优化总结口诀

MySQL 高级(四)索引优化分析 4.7 索引性能分析 前景知识:MySQL中有专门负责优化SELECT语句的优化器模块,可以通过计算分析系统中收集到的统计信息,为客户端请求的Query提供MySQL认为最优的执行计划 **如何获取MySQL的执行时间?**使用EXPLAIN 关键字 EXPLAIN关键字:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如果处理你的SQL语句。分析你的查询语句或是表结构的性能瓶颈 能够分析哪些信息? SQL中涉及到表的读取顺序–>id

NeverGiveUp 517

mysql (三) 索引优化以及案例分析

文章目录1、使用原则2、特殊案例2.1、is null 和 is not null2.2、or 一定为失效吗?2.3、order by会使用索引吗?3、总结 1、使用原则 原则 解释 全值匹配 复合索引会存在某列便会匹配 最佳左前缀法则 如果索引了多例,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。 不在索引上计算、函数、类型转换 不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 范围条件右边条件索引失效 存储

weixin_38650898的博客 742

Explain分析-Mysql索引优化(三)

常见sql场景优化

Myname_China的博客 1004

MySQL高级---索引优化分析(三、索引简介)

1、索引的概念         MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。可以简单理解为排好序的快速查找数据结构。         在数据之外,数据库系统还维...

我是太阳 2万+

MySQL进阶(三)——索引优化分析(性能分析)

本篇文章主要是对MySQL学习时的一些总结,作为学习笔记记录。 性能下降原因 对于某些sql语句来说,会导致执行时间长,等待时间长的后果,从而造成整个sql语句的性能下降。导致sql性能下降的原因主要有: 查询数据过多:能不能拆分,降低过滤条件 关联了太多的表,太多join:使用之前尽量先过滤 没有利用到索引(单值,复合) 索引是针对列建立的,但并不可能对所有的数据列都建立索引 同时索引也并不是越多越好,数据更新的同时,索引也会进行调整,因此过多的索引会降低性能 而mysql也不会使用到

止步听风的博客 1301

MySql优化(四)索引优化分析(案例分析)

写在前面: 我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的! 博客里面的内容大部分均为原创,是自己日常的学习记录和总结,便于自己在后面的时间里回顾,当然也是希望可以分享自己的知识。目前的内容几乎是基础知识和技术入门,如果你觉得还可以的话不妨关注一下,我们共同进步! 个人除了分享博客之外,也喜欢看书,写一点日常杂文和心情分享,如果你感兴趣,也可以关注关注! 微信公众号:傲骄鹿先生 ...

在路上 2788

mysql性能优化-慢查询分析、优化索引和配置(三)

基本思路: (1)性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 (2)索引及查询优化 (3)配置优化 MySQL数据库最常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么...

灼烧的疯狂 464

MYSQL索引优化案例分析

(一)单表 案例: create table if not exists article( id int(10) unsigned not null PRIMARY key auto_increment, author_id int(10) UNSIGNED not null, category_id int(10) UNSIGNED not null, views int(10) UNSIGNE...

onlynima的博客 297

mysql慢查询原因分析与解决(三)——索引及查询优化

转载地址:http://www.javaranger.com/archives/1500 索引的类型 Ø 普通索引:这是最基本的索引类型,没唯一性之类的限制。 Ø 唯一性索引:和普通索引基本相同,但所有的索引列值保持唯一性。 Ø 主键:主键是一种唯一索引,但必须指定为”PRIMARY KEY”。 Ø 全文索引:MYSQL从3.23.23开始支持全文索引和全

Mr__fang的专栏 6959
上一篇: 索引优化分析(二)
下一篇: Docker快速入门(一)
Array*
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值