首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何利用日志链路追踪程序执行SQL?

导读:查看SQL的执行效率,不难想到使用explain分析查询,但是前提是你需要非常了解业务背景。否则很难精准定位到。 系统都是逐渐演进的,一个系统在运行中必须是根据场景逐渐地提高优化性能。...然后开始百度:如何提高SQL执行效率? 通过 explain、show profile 和 trace 等诊断工具来分析查询。 但是大多数情况下业务线过长,不可能一个人完成。...▐ SQL执行时间公式 要想处理此类问题首先的分析,SQL执行时间计算如何来划分?SQL的语句执行过程大致如下图所示。 如果想统计SQL执行时间。...所以对于程序而言可以得到粗略公式 SQL执行时间=提取数据之后时间-语法解析开始时间 ▐ 添加增加JDBC追踪 阅读过Hibernate或者MyBatis等持久化框架的应该比较了解Statement位于...这样就有了文章开头的程序执行过程中锁触发的SQL执行耗时情况。

87731

如何使用查询快速定位执行的 SQL?

查询可以帮我们找到执行的 SQL,在使用前,我们需要先看下查询是否已经开启,使用下面这条命令即可: mysql > show variables like '%slow_query_log';...我们能看到slow_query_log=OFF,也就是说查询日志此时是关上的。...我们可以把查询日志打开,注意设置变量值的时候需要使用 global,否则会报错: mysql > set global slow_query_log='ON'; 然后我们再来查看下查询日志是否开启...,以及查询日志文件的位置: 你能看到这时查询分析已经开启,同时文件保存在 DESKTOP-4BK02RP-slow 文件中。...比如我们想要按照查询时间排序,查看前两条 SQL 语句,这样写即可: 你能看到开启了查询日志,并设置了相应的查询时间阈值之后,只要查询时间大于这个阈值的 SQL 语句都会保存在查询日志中,然后我们就可以通过

2.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

如何使用查询快速定位执行的 SQL?

查询可以帮我们找到执行的 SQL,在使用前,我们需要先看下查询是否已经开启,使用下面这条命令即可: mysql > show variables like '%slow_query_log';...我们能看到slow_query_log=OFF,也就是说查询日志此时是关上的。...我们可以把查询日志打开,注意设置变量值的时候需要使用 global,否则会报错: mysql > set global slow_query_log='ON'; 然后我们再来查看下查询日志是否开启...,以及查询日志文件的位置: ?...你能看到开启了查询日志,并设置了相应的查询时间阈值之后,只要查询时间大于这个阈值的 SQL 语句都会保存在查询日志中,然后我们就可以通过 mysqldumpslow 工具提取想要查找的 SQL 语句了

2.5K20

Mysql中sql执行如此

我们经常发现,往往执行一条简单的查询语句,但是很长时间都没有返回,今天我们看看是什么原因导致的 第一类:查询长时间不能返回 执行下面语句 select * from t where id =1;...可以看到4号线程就是阻塞的罪魁祸首,因此只要干掉他就可以了, 不过,这里不应该显示kill query 4,这个命令是指把正在执行的语句停止,但是我们的update语句已经执行完成了,这样是无法去掉...第二类:查询 我们执行下面语句 select * from t where c=50000 limit 1; 有字段c没有索引,这个语句只能全表扫描,因此要扫描5万行,再看看日志的记录. ?...按照上面操作我们再看看对应的查询日志 ? ? 我们发现lock in share mode加锁操作居然时间比没有加锁的查询块了,超出了我们的预期,我们再看看每个sql查询结果 ?...undo log,执行100万次,才会把1返回.

1.6K30

应用执行的问题排查路径

本文链接:https://blog.csdn.net/bisal/article/details/102480420 在OLTP系统的运维过程当中,可能最“讨厌”的一种场景,就是碰到应用执行,因为表象是应用执行...,或者定位到某条SQL语句执行,但根源未必就是数据库,或者不完全就是数据库,例如一次简单的数据检索,可能就会涉及到多个应用、不同的操作系统、网络环境、数据库等资源,可以说环环相扣,毕竟不是“一体机”,...在这个,就介绍了一种定位问题的思路,可以向程序增加一些断点,无论是要打印到控制台,还是应用日志,通过断点,逐步定位,其中需要注意的一点,就是断点的粒度,如果断点粒度很粗,很可能就无法精确定位。...要是复杂一些,打出dump文件,从程序的调用栈,一步步进行判断,是另一种方式,当然这对人员的技术要求更高。...有应用反馈发现大量DB查,并且日志上还记录了详细的执行时间和SQL语句。接到问题后我们第一时间排查DB发现并没有异常,也没有查记录,并且日志中的大部分SQL都能匹配索引,测试执行都在毫秒级。

69851

夜维执行的原因探究

前两天和同事一块看一个夜维程序执行异常的问题,是一个比较典型的问题,同时也是一个比较头疼的问题。 背景描述: 1....现象是程序开始执行后,大约15分钟,都没有结束,上线人员担心有问题,就人工终止了改程序。 3. 临时改了下程序,另外一个k_date字段代替r_date,同样的SQL,很快就执行完了。...SQL的原因。...无论是3还是4对于SQL的执行计划,SQL的原因基本确定是由于选择了“索引2”的INDEX SKIP SCAN或INDEX FULL SCAN,没有选择r_date作为前导列的主键索引,但为什么CBO...(3) 手工采集统计信息,更新该表的统计信息,以让CBO可以使用正确的统计信息选择正确的执行计划,这是根本解决之道,且不需要程序修改,当然最好提前看下应用程序中是否使用了HINT等,避免因更新统计信息,

57430

12.22 php-fpm执行日志

php-fpm执行日志目录概要 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容 request_slowlog_timeout = 1 slowlog...> curl -x127.0.0.1:80 test.com/sleep.php cat /usr/local/php-fpm/var/log/www-slow.log php-fpm执行日志 在做php...网站的时候,建议使用lnmp,因为我们可以分析php的执行 查询方法: 1.系统负载,可以通过各种工具查,查出是哪个进程导致 2.PHP网站访问,通过查看日志 配置www.conf 在配置文件中加入...root@hanfeng php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log [root@hanfeng php-fpm.d]# 模拟一个执行的...]# 这个就是执行日志的功效 在遇到php网站访问的时候,就可以去查看日志 查看www.conf [root@hf-01 php-fpm.d]# cat www.conf [www] listen

1.5K70

为什么我这条SQL执行那么

本文公众号来源:苦逼的码农 作者:帅地 一条SQL执行语句很慢有什么原因?...一、开始装逼:分类讨论 一条 SQL 语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论。...下来我们来访分析下第二种情况,我觉得第二种情况的分析才是最重要的 三、针对一直都这么的情况 如果在数据量一样大的情况下,这条 SQL 语句每次都执行的这么,那就就要好好考虑下你的 SQL 书写了,下面我们来分析下哪些原因会导致我们的...SQL 语句执行的很不理想。...(2)、执行的时候,遇到锁,如表锁、行锁。 2、这条 SQL 语句一直执行的很慢,则有如下原因。 (1)、没有用上索引:例如该字段没有索引;由于对字段进行运算、函数操作导致无法用索引。

53720

线上sql执行,分享3个优化案例

前段时间,博主线上项目的几个后端接口执行耗时达到了三、四秒钟以上,查看接口代码,发现 sql 语句执行过慢,于是开始分析 sql 执行 这里把比较经典的优化案例分享给大家。...博主记得这个接口是在21年10月上线的,到现在经历了一年多,接口执行时间是越来越慢,初步分析是用户数量持续增长,用户表记录越来越多,导致 sql 查询执行效率越来越低导致。...app_id 没有加索引,所以在 or 条件查询下执行的就是全表扫描。更改字段后执行结果: Ok,这里发现了是查询字段写错了,那么修改查询字段正确后,查询0.18秒就正常了。...这个写法虽然不是在代码 for 循环中执行,但是这条 sql 语句执行时,MySql 任然是单条单条执行的。...aBoolean).findFirst().orElse(true), "批量更新失败");}执行耗时: 可以看到执行耗时2.5秒,执行时间缩短了6倍。

1K21

奇异故障:SQL执行反复一两快

如果第一次快,第二次,那么可能就是由于cardinality feedback的缘故,我们可以设置”_OPTIMIZER_USE_FEEDBACK”= false来规避。...但是这次遇到的问题却是执行过程两快一执行过程是->快->快->->快->快->->快->快->……,执行之后,还能再快回来,这是怎么回事呢?...这个sql初次执行的时候是快的,然后把这次快的执行计划用spm固定下来,再次执行的时候,就发生了快快的现象。...于是无法成功reproduce执行计划。无法成功reproduce原来的执行,oracle将reproduce标记为从YES改为NO,然后使用了坏的执行计划。——执行。...继续执行第四次,由于之前reproduce标记未变,因此,CFB介入,此时hint中Bug 14147762,生成坏的执行计划,重复到了第一步的情况,因此出现了的情况。

93740

0817-6.3.3-Impala执行DDL问题分析报告

DDL的主要时间是消耗在Hive Metastore Server内部,后续通过修改了Hive Metastore Server的日志级别来进一步确定耗时发生的具体环节。...Server发出这个通知(Notifying sentry about Notification for CREATE_TABLE (id: 133299))之后等了将近6秒才收到返回消息,这就是为什么DDL的原因...而第一条消息是执行数据库操作的DataNucleus代码里记录的。这两条消息说明了时间都花在了数据库操作上。...以上发现都表明这个问题的根源应该在Sentry的后台数据库上,后续将测试环境的Sentry元数据dump出来提供给了Support,Support在拿到Sentry的库后重现了DDL的问题,在测试集群的...Sentry通过判断其他权限比如CREATE/ALL/SELECT等判断用户是否可以对某个对象执行特定的操作。

1.6K30

程序执行的本质

程序执行的本质 程序执行的过程:代码区的指令不断执行,驱使动态数据区和静态数据区产生数据变化。 这一过程需要计算机的管控。下面我们着重介绍对代码区和动态数据区的管控。...对代码区和动态数据区的管控 其中eip永远指向代码区将要执行的下一条指令,它的管控方式有两种,一种是“顺序执行”,即程序执行完一条指令后自动指向下一条执行;另一种是跳转,也就是执行完一条跳转指令后跳转到指定的位置...初始情景: eip指向main函数的第一条指令,此时程序还没有运行,栈空间里还没有数据,ebp和esp指向的位置是程序加载时内核设置的(详情请看《Linux内核设计的艺术》一书)。...ESP寄存器存放当前线程的栈顶指针; EBP寄存器中保存当前线程的栈底指针; call main下面的一条指令地址EIP(也称返回地址)寄存器; 程序开始执行main函数第一条指令,eip自动指向下一条指令...第一条指令的执行,致使ebp的地址值被保存在栈中,保存的目的是本程序执行完毕后,ebp还能返回现在的位置,复原现在的栈。随着ebp地址值的压栈,esp自动向栈顶方向移动,它将永远指向栈顶。

84110

POSTGRESQL AUTO_EXPLAIN 记录语句的执行计划

auto_explain 模块提供一种自动记录语句的执行计划的功能,使用这个功能的同时需要注意,任何功能的开启都需要负担一定的性能损耗,在损耗的情况下,我们应该判断是否开启这个功能。...我们需要在下面的这个位置,将auto_explain 填入到 local_preload_libraries ,并且重启数据库服务器。...这个参数代表了决定了超过多长时间的SQL 语句需要对执行计划进行记录,默认是-1 ,表名不记录任何语句。...我们执行一个SQL 查看在调整参数并重启后,日志中开始出现查询的执行计划的信息。...主要原因是,功能的不同,查看查询的执行计划本身并不应该针对每一个查询,而是应该对应与一些较长时间执行的SQL 如我们默认 1秒的SQL 就要记录在查询记录中,但是我们不应该将查询执行计划也设置成一秒

61620

php使用register_tick_function来定位执行的代码

同事在优化页面加载的问题中将数据分离为2个接口来分别异步加载,但是实际的情况是接口1一直在查询,接口2也一直在查询,接口2一定要等接口1查询完成才能返回结果。...正好我有空就想到通过register_tick_function来判断到底是卡在哪一行,一旦注册register_tick_function,php执行一行代码都会调用注册的处理函数,通过计算上一次代码执行时间和本次执行时间即可定位位置...php/** * Class Tracker */class Tracker{    /**     * 执行代码时间(单位毫秒)     * @var int     */    protected ...$eval_code_time = 0;    /**     * 执行代码过慢时间(单位毫秒)     * @var int     */    protected $slow_code_time =...可能存在的问题,如果代码执行直接卡死进程关闭是无法定位到的,由于是windows,否则可以开启fpm日志即可快速定位。

25620

python程序执行的原理

硬盘:永久存储数据、速度、空间大。...程序执行的原理: 1.程序执行之前,保存在硬盘中; 2.当要运行一个程序时: 操作系统首先会让cpu把程序复制到内存中; 然后cpu执行内存中的程序代码; 简而言之,程序执行,首先要加载到内存。...python程序执行的原理: python是一门解释性语言,不是编译性语言。解释性语言的特点是需要解释器进行逐行解释代码,没有编译阶段。...编译是指将代码转换成计算机可识别的二进制文件,然后将这些二进制文件链接成可执行文件。...(1)操作系统首先让cpu把python解释器的程序复制到内存中; (2)python解释器语法规则:从上向下让cpu翻译python程序中的代码; (3)cpu负责执行翻译完成的代码; Python解释器有哪些

42130
领券