挂起

数据提交一直在挂起状态(IE显示请求挂起)

坚强是说给别人听的谎言 提交于 2019-11-30 16:50:23
最近忽然发现项目提交的时候一直在提交状态,不能提交成功,客户反馈提交了4个多小时还在提交中,应用也没发现什么明显错误,前台显示如下(IE下才会有这种提示,其他的浏览器没错误): 刚发现该问题的时候,网络查了一遍基本没发现靠谱的,倒是看到一个有意思的 按照这位大佬的方法修改了,依旧还是无法提交,请求一直在挂起状态,程序中的各种页面跳转没有任何问题,就是在提交的时候无法提交成功,找了一两天,感觉不是程序的问题,将目光转向数据库。 发现数据库一堆锁表,问题终于确定是数据库锁表导致提交不成功的,使用工具查询 各种锁,看sql是一条查询语句很久没出结果,而这个查询语句锁了表。 在印象中锁表一直都是插入和更新才锁表,而且还是行锁,查询也会锁表,赶紧补习一下,数据库的锁有很多种,但大致可以分为S锁(共享锁)以及U锁(排他锁),查询的时候会加上S锁,S锁对其他的查询无影响,但是插入和更新则会因为这个锁导致无法插入和更新,而这个sql查询统计的时候耗时非常久,故而导致了整个应用出现问题。根据工具排查出某个古老的应用在进行这个查询,临时先将该应用关闭,恢复正常的业务。 但问题还是要解决,总不能一直关闭那个老应用吧,暂时给出的方案: 1,对表增加索引,让查询更快点 2,对查询语句进行修改,加上 WITH(NOLOCK) 来去掉这个共享锁,当然这也会产生其他问题,比如脏读问题,具体还是要看各自的业务