您当前的位置:首页 > 电脑百科 > 数据库 > 百科

如何对数据库中慢SQL进行快速定位?

时间:2021-04-12 11:23:52  来源:君聊创业  作者:君聊创业

定位数据库慢查询SQL有多种方式,根据具体使用的数据库种类和经济实力来定:

一、使用APM产品

APM全程为Application Performance Management,软硬件解决方案都有,如果经济实力不错,直接买大厂商的APM产品最为省时省力,而且还附带报警和分析功能。

APM不仅是管理数据库性能的,还可以对应用服务器进行检测,对JAVA、.NET、php、Ruby、Python、NodeJS等语言开发的应用程序性能进行监测。

目前市面上很多,有像深信服等提供的集成在硬件中的一体机式的,还有一些纯软件的APM产品,例如像OneAPM那样即可以本地部署的,还可以本地安装弹针然后云端SaaS部署的。这里就不一一列举了,大家可以根据自己预算找相应的厂家咨询。

二、使用专门的数据库监测产品

市面上还有一类小众的专门针对数据库的产品。大部分都是多年DBA在自己多年的数据库运维经验基础上针对某种数据库定制的监测系统,除了针对数据库各个性能指标进行监测报警外,还提供智能分析和性能优化等服务。

例如作为微软中国SQL Server金牌合作伙伴的北京格瑞趋势公司所推出的SQL专家云等产品,是专门针对微软SQL Server数据库某一段时间的采样数据分析、诊断,主要的应用场景包括:对数据库进行体检,自动形成体检报告;分析当前系统存在的问题及隐患;分析采样时段的性能问题及根源;分析数据库的参数配置及索引;自动优化并生产可执行的脚本。

三、使用开源运维监控系统

例如Zabbix、NagIOS、Grafana、Open-falcon等,这些开源系统同APM产品类似,但主要是提供给服务器运维人员使用的,内置了一部分数据库监控的功能,有的插件很多,功能和界面都还是不错的。

但是开源产品的安装和使用需要有较高水平的运维人员来使用,需要自己来摸索适合的方式,针对性也不够强。而且由于缺少支持,遇到问题解决起来比较麻烦。

四、使用数据库系统自身的日志功能

许多数据库的日志系统都带有慢查询记录功能,对于流量不大的系统,又不想投入大量金钱,可以先直接使用数据库日志来记录慢查询,然后定期汇总分析,持续优化应用程序系统。一般用在开发期,或系统刚上线的试运行期。

例如MySQL的慢查询日志,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。

MySQL 慢查询的相关参数解释:

slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。

log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。

log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。

log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

Postgrsql也有类似的慢查询日志记录方式,PostgreSQL 日志支持的输出格式有 stderr(默认)、csvlog 、syslog。一般的错误跟踪,只需在配置文件“postgresql.conf”简单设置几个参数,当然还有错误级别等要设置。

Postgresql 慢查询配置相关参数:

 

logging_collector = on
log_destination = 'stderr'
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

查询控制台查看当前慢查询设置:

show log_min_duration_statement;

===>5s



Tags:慢SQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
定位数据库慢查询SQL有多种方式,根据具体使用的数据库种类和经济实力来定:一、使用APM产品APM全程为Application Performance Management,软硬件解决方案都有,如果经济实力不错,...【详细内容】
2021-04-12  Tags: 慢SQL  点击:(259)  评论:(0)  加入收藏
我们不能等着系统上线,慢 SQL 吃光数据库资源之后,再找出慢 SQL 来改进,那样就晚了。那么,怎样才能在开发阶段尽量避免写出慢 SQL 呢?定量认识 MySQL一台 MySQL 数据库,大致处理能...【详细内容】
2020-12-08  Tags: 慢SQL  点击:(167)  评论:(0)  加入收藏
千里之堤,溃于蚁穴。一个在完美的架构,因为一个慢Sql,会导致系统直接崩溃。总结了一些解决慢sql的方法,供参考。一、慢sql优化订阅每日慢日志,优先解决调用次数多的慢sql,因慢sql...【详细内容】
2020-09-04  Tags: 慢SQL  点击:(101)  评论:(0)  加入收藏
MySQL“慢SQL”定位数据库调优我个人觉得必须要明白两件事 1.定位问题(你得知道问题出在哪里,要不然从哪里调优呢) 2.解决问题(这个没有基本的方法来处理,因为不同的问题处理的方...【详细内容】
2020-08-24  Tags: 慢SQL  点击:(62)  评论:(0)  加入收藏
很多情况我们系统要分析出来那些查询很慢,其实可以通过mybatis开发一个插件,去监控每次执行的sql耗时,如果超过配置的时间,则认为该sql属于慢sql需要优化。日志里面就会打印每一...【详细内容】
2020-07-28  Tags: 慢SQL  点击:(231)  评论:(0)  加入收藏
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程...【详细内容】
2019-09-12  Tags: 慢SQL  点击:(131)  评论:(0)  加入收藏
本文出自头条号老王谈运维,转载请说明出处。当你正在全神贯注的投入工作时MySQL语句变得特别缓慢,怎么办?如何在MySQL语句中找到低效率执行的SQL语句呢?这个问题困扰着一批又一...【详细内容】
2019-07-25  Tags: 慢SQL  点击:(377)  评论:(0)  加入收藏
▌简易百科推荐
1增1.1【插入单行】insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values (&#39;开心朋朋&#39;,&#39;男&#39;,&#39;1980/6/15&#3...【详细内容】
2021-12-27  快乐火车9d3    Tags:SQL   点击:(1)  评论:(0)  加入收藏
最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫, 不知道各种写法孰优孰劣,该选用哪种写法,以及各种写法的优缺点,本文以一个简单的查询...【详细内容】
2021-12-23  linux上的码农    Tags:sql   点击:(9)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的HasorDB 是一个全功能数据库访问工具,提供对象映射、丰...【详细内容】
2021-12-22  GitHub精选    Tags:HasorDB   点击:(5)  评论:(0)  加入收藏
作者丨Rafal Grzegorczyk译者丨陈骏策划丨孙淑娟【51CTO.com原创稿件】您是否还在手动对数据库执行各种脚本?您是否还在浪费时间去验证数据库脚本的正确性?您是否还需要将...【详细内容】
2021-12-22    51CTO  Tags:Liquibase   点击:(3)  评论:(0)  加入收藏
场景描述:由于生产环境的表比较复杂,字段很多。这里我们做下简化,只为说明今天要聊的问题。有两张表 tab1,tab2: tab1 数据如下: tab2 数据如下: 然后给你看下,我用来统计 name=&#3...【详细内容】
2021-12-20  Bald    Tags:SQL   点击:(5)  评论:(0)  加入收藏
前言知识无底,学海无涯,知识点虽然简单,但是比较多,所以将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家。一、SQL简述1.SQL的概述Structure Query Language(结构化查...【详细内容】
2021-12-16  谣言止于独立思考    Tags:SQL基础   点击:(13)  评论:(0)  加入收藏
前言作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的 SQL 查询语法必须要掌握。最近有部分做测试小伙...【详细内容】
2021-12-14  柠檬班软件测试    Tags:SQL   点击:(15)  评论:(0)  加入收藏
话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表...【详细内容】
2021-12-08  小智雅汇    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
概述DBConvert Studio 是一款强大的跨数据库迁移和同步软件,可在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的 DBConvert 和 DBSync 核心与改进的现...【详细内容】
2021-11-17  雪竹聊运维    Tags:数据库   点击:(26)  评论:(0)  加入收藏
一、前言 大家好,我是小诚,《从0到1-全面深刻理解MySQL系列》已经来到第四章,这一章节的主要从一条SQL执行的开始,由浅入深的解析SQL语句由客户端到服务器的完整执行流程,最...【详细内容】
2021-11-09  woaker    Tags:SQL   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条