一个索引引发的问题
2017-02-21 11:23
204 查看
215 上了一个大表的组合索引,引发了查询sql的执行计划混乱,最终CPU充到100%,业务系统挂掉,库也几乎宕掉。
1,为什么建了索引后,oracle执行计划会乱掉, 而且选择了一个最慢的执行计划?
DBA答复:表关联! 关联表越多, oracle选择执行计划出错的概率变大!
如何防止此类事件: 上索引之前,先固话执行计划,上完后再调整执行计划
2,网络阻塞问题。statement超时时间并不能控制网络阻塞时间。
statement超时时间设置了10s,如果网络阻塞了, 10s并不能中断,客户端仍然阻塞。
3,查无交易不要翻失败。
通常的异步落单业务处理逻辑。
1)落单 ,2)查单 3)翻状态
查单的时候下游有可能返回无此交易, 这时候要小心了,不要贸然把状态翻成失败。
有可能落单的请求比查询请求先到达,你翻失败了,落单可能就成功了。
也有可能落单的请求被hang住了,例如1的原因,库宕机了,数据入库被阻塞,数据还没插入呢,查询请求就来了。
1,为什么建了索引后,oracle执行计划会乱掉, 而且选择了一个最慢的执行计划?
DBA答复:表关联! 关联表越多, oracle选择执行计划出错的概率变大!
如何防止此类事件: 上索引之前,先固话执行计划,上完后再调整执行计划
2,网络阻塞问题。statement超时时间并不能控制网络阻塞时间。
statement超时时间设置了10s,如果网络阻塞了, 10s并不能中断,客户端仍然阻塞。
3,查无交易不要翻失败。
通常的异步落单业务处理逻辑。
1)落单 ,2)查单 3)翻状态
查单的时候下游有可能返回无此交易, 这时候要小心了,不要贸然把状态翻成失败。
有可能落单的请求比查询请求先到达,你翻失败了,落单可能就成功了。
也有可能落单的请求被hang住了,例如1的原因,库宕机了,数据入库被阻塞,数据还没插入呢,查询请求就来了。
相关文章推荐
- 一个问号引发的血案之程序员的职业素养(java.sql.SQLException: 无效的列索引问题)
- getYear引发的一个小问题
- 处理一个傻子引发得问题
- 安装SQLServer2K可能引发一个严重问题
- C++流实现内幕---由boost::lexical_cast引发的一个问题
- vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题
- 一个VS.net自动生成代码引发的问题
- 由一个问题引发的思考
- 安装SQL Server2K可能引发一个严重问题
- 一个粗心的问题引发的思考
- 一个游戏引发的思考(概率问题)
- 又一个升级补丁引发的 arcgisserver cache 问题
- 一个私有的PageLoad在Mono下引发的问题
- 安装2K可能引发一个严重问题
- 一个游戏引发的思考(概率问题)
- 一个索引问题导致大量LOG产生,填满磁盘——ORA-08102
- 安装SQL Server2K可能引发一个严重问题
- 安装SQL Server2K可能引发一个严重问题(1)
- 一个vc常见问题的索引的网址
- 安装SQL Server2K可能引发一个严重问题