【故障公告】再次遭遇SQL语句执行超时引发网站首页访问故障

非常抱歉,昨天 18:40~19:10 再次遭遇上次遇到的 SQL 语句执行超时引发的网站首页访问故障,由此您带来麻烦,请您谅解。
上次故障详见之前的故障公告,上次排查下来以为是 SQL Server 参数嗅探问题引起的,但在引起参数嗅探的漏洞被修复后再次出现故障说明上次的判断是错误的。
今天出现故障时的表现与上次一样,唯一不同的地方是这次比上次更糟糕,即使主备切换也无法恢复。
后来我们从 SQL 语句本身下手,给查询首页博文列表的 SQL 语句添加了时间条件才恢复正常。
SET @StartDate = dateadd(day, -2, getdate())
SELECT ...
FROM
blog_Content bc WITH(NOLOCK)
...
WHERE
bc.DateAdded >= @StartDate AND ...
ORDER BY
bc.[DateAdded] DESC
DateAdded 是博文表 blog_Content 的聚集索引字段,这段 SQL 语句之前长时间都使用了这个时间条件,但前段时间这个时间条件有时会造成数据库 CPU 占用高,后来去掉了。
加了 DateAdded 时间查询条件后,虽然恢复了正常,但查询速度不太理想,在执行计划被缓存后耗时也要 800-900 毫秒。
今天上午我们进一步对 SQL 语句进行了优化,还是基于通过时间条件减少检索范围的思路,对博文与首页的关联表增加了查询时间条件。
SELECT ...
FROM
blog_Content bc WITH(NOLOCK)
INNER JOIN blog_Site_Links bl WITH(NOLOCK) on bc.ID = bl.EntryID
WHERE
bc.DateAdded >= @StartDate AND ...
AND bl.CreatedTime > @StartDate ...
ORDER BY
bc.[DateAdded] DESC
这一优化效果明显,查询耗时降到了 50 毫秒以内。
另外,昨天在处理故障时,进行了一个索引修改的操作引发索引重建,结果造成数据库 CPU 100% , 造成几分钟全站访问故障,由此您带来麻烦,请您谅解。
【故障公告】再次遭遇SQL语句执行超时引发网站首页访问故障的更多相关文章
- 【故障公告】SQL语句执行超时引发网站首页访问故障
非常抱歉,今天早上 6:37~8:15 期间,由于获取网站首页博文列表的 SQL 语句出现突发的查询超时问题,造成访问网站首页时出现 500 错误,由此给您带来麻烦,请您谅解. 故障的情况是这样的. ...
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- Oracle SQL语句执行步骤
转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...
- Jenkins工程中SQL语句执行的方法
前言 网上很多jenkins工程中基于shell或批处理方式调用sql文件执行sql命令的方式,大部分都是需要基于sql文件来完成的,因此在sql语句发生变化时需要去jenkins服务端修改对应的sq ...
- 转:Oracle中SQL语句执行过程中
Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字 ...
- html5 webDatabase 存储中sql语句执行可嵌套使用
html5 webDatabase 存储中sql语句执行可嵌套使用,代码如下: *); data.transaction(function(tx){ tx.executeSql("creat ...
- mysql优化(三)–explain分析sql语句执行效率
mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...
- 统计sql语句执行效率
--统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...
- SQL语句执行顺寻
SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需 ...
随机推荐
- X-Admin&ABP框架开发-代码生成器
在日常开发中,有时会遇到一些相似的代码,甚至是只要CV一次,改几个名称,就可以实现功能了,而且总归起来,都可以由一些公用的页面更改而来,因此,结合我日常开发中使用到的页面,封装一个适合自己的代码生成器 ...
- NFS服务介绍及实验
一.什么是NFS NFS 是 Network File System 的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布.功能是通过网络让不同的机器 ...
- 【题解】P5462 X龙珠
[题解]P5462 X龙珠 赛题 #B: P5462 X龙珠 | 满分: 100分 发一个set做法 维护两个set,一个按照顺序排序,一个按照值排序. 每次从大往小取,问题就变成了判断这个最大值后面 ...
- $CF888E\ Maximum\ Subsequence$ 搜索
正解:$meet\ in\ the\ middle$ 解题报告: 传送门$QwQ$. 发现数据范围为$n\leq 35$,所以$2^{\frac{n}{2}}$是可做的. 所以先拆成$A,B$两个集合 ...
- Docker Swarm Mode 入门实践
本文来源 翻译并总结官方文档,添加自定义示例,参考自Docker 19.03版本官方文档 未来可能归档为:https://docs.docker.com/v19.03/ 2020.01.03为http ...
- 电信NBIOT平台的CA证书上传-消息订阅回调地址检测503错误
在NBIOT北向开发过程中,遇到消息订阅回调地址检测503错误,经过论坛查询与文档查阅一直都没有解决问题,大多人都说是RESTful地址格式问题,但其实不是.最终发现是我们在电信平台创建应用时,上传C ...
- Theia APIs——命令和快捷键
上一篇:使用Theia——创建语言支持 命令和快捷键 Theia可以通过多种不同的方式进行扩展.命令允许packages提供可以被其它包调用的唯一命令,还可以向这些命令添加快捷键和上下文,使得它们只能 ...
- 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架
一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...
- Could not find a version that satisfies the requirement numpy>=1.7.0 (from pan das==0.17.0) (from versions: ) No matching distribution found for numpy>=1.7.0 (from pandas==0.17.0)
今天晚上一直在安装pandas,天杀的,真的是太难了.后来发现提示: Could not find a version that satisfies the requirement numpy> ...
- 【转】Vim显示中文乱码
Windows下,在Vim中如果想让中文正常显示,可以在 Vim安装目录下找到_vimrc 文件,用记事本打开就行,然后在其中加入如下语句: set fileencodings=gb2312,gb ...