数据库索引失效的一种场景:分析问题的思路和策略

本文分享了一次解决数据库索引失效问题的分析过程,问题源于Timestamp类型的变量绑定导致Oracle解释器将查询转为全表扫描。通过JavaMelody监控,发现SQL在JDBC中执行缓慢。经过一步步排查,找到原因是SQL中Timestamp参数导致的函数索引失效。解决方案是确保传入参数类型与column类型一致,避免索引失效。
摘要由CSDN通过智能技术生成

这是公司研发团队发现的一个关于数据库索引失效方面的问题,我们的工程师对该问题进行了分析和解决并写了这份小结。归根揭底还是对开发框架和技术应用的把握上存在纰漏,但个人觉得在分析问题->找出原因->确认解决方案这一思路和策略上本文能起到一定借鉴作用,所以稍微梳理了一下拿出来和大家分享。

问题的现状是测试人员反馈某一个功能操作耗时很长(需要20秒以上),而开发人员核对代码发现无论从业务逻辑上还是代码实现上都没有问题,涉及到的数据查询等功能在数据库中也创建了合适的索引以确保查询效率,于是我们的工程师就去研究了,过程如下:

1.      首先应用内嵌入了一个系统监控平台JavaMelody(此为google出品的一个开源神器 https://code.google.com/p/javamelody/

2.      通过该神器观测到该操作的方法执行帧信息,发现其中耗时最多的一步:


3.      下钻至此方法内部,看到其调用的sql为:


4.      对该sql进行分析࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值