位置: 编程技术 - 正文

MySQL慢查询优化之慢查询日志分析的实例教程(MySQL慢查询优化面试问题)

编辑:rootadmin

推荐整理分享MySQL慢查询优化之慢查询日志分析的实例教程(MySQL慢查询优化面试问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql优化常用的15种方法,mysql慢sql优化,mysql如何优化慢查询,mysql如何优化慢查询,MySQL慢查询优化面试问题,mysql如何优化慢查询,MySQL慢查询优化面试问题,MySQL慢查询优化面试问题,内容如对您有帮助,希望把文章链接给更多的朋友!

数据库响应慢问题最多的就是查询了。现在大部分数据库都提供了性能分析的帮助手段。例如Oracle中会帮你直接找出慢的语句,并且提供优化方案。在MySQL中就要自己开启慢日志记录加以分析(记录可以保存在表或者文件中,默认是保存在文件中,我们系统使用的就是默认方式)。

先看看MySQL慢查询日志里面的记录长什么样的:

这个日志应该很好理解了,第一个#记录时间戳,第二个#记录执行命令的用户和地址信息,第三个#记录执行查询的时间、锁的时间、返回行数、被扫描的行数。接着后面记录真正执行的SQL语句。还可以通过以下命令看看cvs存储格式每个字段意义。

接下来说说如何获取和分析慢日志吧。

查看MySQL慢日志参数

进入启动好的MySQL,执行以下命令

这里告诉我们慢日志的日志存放位置,慢日志是否有开启。那么什么样的查询需要被日志呢?在MySQL中, 没有index的查询 以及 超过指定时间同时超过指定扫描行数的查询 需要记录在慢日志查询里面。

那么它们的参数又是怎么查看的呢?

没有index的查询记录开关

第一个参数 表示是否开启记录没有index的查询,第二个

参数用来做日志记录的流量控制,一分钟可以记录多少条,默认0是表示不限制。

超过指定时长的查询开关

就一个参数指定超过多少时长的查询需要被记录

MySQL慢查询优化之慢查询日志分析的实例教程(MySQL慢查询优化面试问题)

超过指定行数的扫描查询开关

默认是0,代表不现在扫描行数

设置开启MySQL慢日志参数

进入MySQL,输入以下命令或者在MySQL的启动配置文件里面修改或者给MySQL添加启动参数,进入MySQL后的修改如下:

这里要斟酌的有2点,第一是超过什么时长的日志是有问题的,这个由系统需求来决定。第二是没有使用indexes的日志每分钟要记录多少条,要防止日志太多对性能产生影响。

在实际的日志分析中,通常慢日志的log数量不少,同时相同的查询被记录的条数也会很多,这里就需要如何从慢日志查询中找到最有问题,最需要优化的日志。在这方面,有很多分析工具,最基本的分析工具就是MySQL自带的mysqldumpslow,mysqldumpslow(Perl脚本)的输出示例:

一看就非常清楚,它的输出主要 统计不同慢sql的出现次数(Count 1),执行最长时间(Time 0.s),累计总耗费时间(Time 0s),等待锁的时间(Lock 0.s),等待锁的总时间(Lock 0s),发送给客户端的行总数(Rows 3.0),扫描的行总数(Rows 3),用户(root)以及sql语句本身。它最常用的参数包括:

-s 排序选项:c 查询次数 r 返回记录行数 t 查询时间 -t n:显示top n条查询

对于一般的分析已经差不多了,不过对于百分比等等数据mysqldumpslow就不够完善了。所以世界上多了很多各种MySQL慢日志分析工具,比较优秀的有mysqlsla(Perl脚本)和pt-query-digest(Perl脚本),可以提供Count, sql的执行次数及占总的slow log数量的百分比,Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比,% of Time, 去除最快和最慢的sql, 覆盖率占%的sql的执行时间,Lock Time, 等待锁的时间,% of Lock , %的慢sql等待锁时间,Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量,Rows examined, 扫描的行数量,还可以生成表报,存储分析结果。这里就不一一介绍了。

通过这些慢日志分析软件定位到了慢查询语句就已经完成了SQL优化的一大半。接下来通过在MySQL中执行explain或者desc命令查看慢查询语句,可以看出为什么SQL查询慢。

它的输出格式细节可以关注MySQL explain format,在输出中最要注意的是:1. type:ALL是效率最差,最要注意的

2. key:是否有使用Key,key长度如何

3. Extra:最好不要出现filesort以及temporary,最主要是要关注在orderby和groupby。

Note: SQL优化是个很复杂的过程,有可能出现拆东墙补西墙的情况:比如给数据库表加入了索引之后,确实查询快了,可是存储空间加多了,插入删除操作耗时也增加了,如果在一个写多读少的系统中,执行这种优化可能会起到反效果。所以优化完之后千万不能大意,要持续监控系统,防止出现引入新瓶颈的情况。

MySQL中基本的多表连接查询教程 一、多表连接类型1.笛卡尔积(交叉连接)在MySQL中可以为CROSSJOIN或者省略CROSS即JOIN,或者使用','如:由于其返回的结果为被连接的两个数据表的乘积,因

MySQL中UPDATE语句使用的实例教程 一、UPDATE常见用法首先建立测试环境:DROPTABLEIFEXISTSt_test;CREATETABLEt_test(bsbigint()NOTNULLauto_increment,usernamevarchar()NOTNULL,passwordvarchar()defaultNULL,remarkvarchar(2

MySQL的查询缓存机制基本学习教程 MySQL缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那

标签: MySQL慢查询优化面试问题

本文链接地址:https://www.jiuchutong.com/biancheng/312387.html 转载请保留说明!

上一篇:MySQL中Innodb的事务隔离级别和锁的关系的讲解教程(mysql innode)

下一篇:MySQL中基本的多表连接查询教程(mysql有几种)

  • 企业间分红是否需要缴纳企业所得税
  • 地税补缴社保
  • 捐赠利得会计分录
  • 工程款抵房款账务怎么做
  • 股权稀释需要交税吗
  • 筹建期土地使用税分录
  • 如何计算企业当年利润
  • 增值税专用发票开错了咋办
  • 营改增后出售以前年度的固定资产怎么申报?
  • 关于增值税普通发票情况的函范文
  • 互联网税务行动计划五大板块
  • 广告宣传费扣除标准30%是什么?
  • 当月不抵扣的增值税发票在发票勾选时怎么操作
  • 存货跌价准备会计科目编码
  • 司机出车补助会计科目
  • 发工资时忘记扣个税了怎么做账
  • 发票金额大于开票金额
  • 暂估在建工程会计科目
  • 如何阻止windows10升级到11
  • 联想笔记本在bios中怎么把图标和字变大
  • 代扣的工会会费和工会经费
  • PHP:Memcached::getServerList()的用法_Memcached类
  • PHP:Memcached::fetch()的用法_Memcached类
  • 代理出口退税款退到哪
  • gradle视频教程
  • drvmgr.exe
  • 什么叫错账调整
  • 石楠花 开花
  • 不动产出租管理办法
  • 准备动作怎么做
  • 商业承兑可以去银行吗
  • element ui停止
  • 人工智能机器人保姆什么时候实现
  • 目标检测tricks
  • 短期借款利息有可能资本化处理,也可能费用化处理
  • 发票明细清单怎么打印
  • 企业注销时应收账款需要交税吗
  • 什么是稳岗补贴是给企业发放吗
  • 深入了解工作优势怎么回答
  • 织梦生成出现500
  • 给员工买保险的好处和坏处
  • 费用的分摊要注意什么
  • ibm.data.db2
  • 权益法和成本法的适用范围
  • 营业账簿印花税申报流程
  • 金税四期的基本理念
  • 知识产权申请如何申请
  • 未开票收入如何计提增值税
  • 固定资产清理增值税计税依据
  • 公司送的车还能要回去吗
  • 企业如何优化管理
  • 会计月末都需要做什么
  • 母公司帮子公司代缴社保
  • SQL Server 2008 到底需要使用哪些端口?
  • mysql 5.7.18 zip版安装配置方法图文教程(win7)
  • mysql里删除表里的数据
  • windows7卸载所有软件
  • 怎么用uefi装win7
  • winxp系统停止服务
  • 电脑显示windowsxp不能进入桌面
  • Win10 Mobile RS2预览版14904升级截图曝光
  • 苹果服务器操作系统
  • 诺基亚安装ngage
  • 如何将windows 10
  • linux 指定动态库连接位置
  • Cocos2dx3.2 CrazyTetris 物理引擎使用初步
  • perl 字符串处理
  • Strumpy Shader Editor入门教程
  • js按照指定顺序排序
  • 五个常用的视频格式及其特点
  • java栈怎么写
  • python怎么读取中文txt文本
  • UNITE 2015 TAIPEI 五大系列重要議題搶鮮看!
  • jquery动态添加的元素怎么添加事件
  • 网上报税失败怎么办
  • 票折与票扣的区别在哪里
  • 北京朝阳税务局办税大厅
  • 税务总局纪律作风
  • 怎么查询地税信息表
  • 公车补贴计入工资吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设