一条Select语句导致瓶颈
2012-05-12 13:34
316 查看
情况:上周,公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB。
IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。
原因:晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:
Select * From Table1
这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。
为了统计总行数,频频调用这语句,每秒刷新不低于1000次。
也因此导致网络出现瓶颈。
解决:后面把Select语句改成
Select Count(*) from Table1
即可解决问题,网络 IO数据马上降至10MB以下,数据库使用内存也保持在预计范围12GB。
看似非常简单的问题,其实不然。解决这问题,所花的时间周期是6小时,检查问题使用1小时,修改代码使用5小时。
小结:
做事要细心,不要犯低级错误,有时候成功取决于细节。
IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。
原因:晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:
Select * From Table1
这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。
为了统计总行数,频频调用这语句,每秒刷新不低于1000次。
也因此导致网络出现瓶颈。
解决:后面把Select语句改成
Select Count(*) from Table1
即可解决问题,网络 IO数据马上降至10MB以下,数据库使用内存也保持在预计范围12GB。
看似非常简单的问题,其实不然。解决这问题,所花的时间周期是6小时,检查问题使用1小时,修改代码使用5小时。
小结:
做事要细心,不要犯低级错误,有时候成功取决于细节。
相关文章推荐
- 一条Select语句导致瓶颈
- Select语句导致瓶颈
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- 一条select语句将一个用逗分隔的列分成多行
- 显示刚刚添加的最后一条数据,access,选择语句,select
- 一条超长的select语句
- Mysql查询语句使用select.. for update导致的数据库死锁分析
- 一条语句导致CPU持续100%
- oracle中用一条select 语句把符合多个条件的查询结果列出来
- 刚学习Db2 对一条 select 语句得疑问.
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
- 【故障处理141119】一次数据库不繁忙时一条sql语句2个运行计划导致业务超时的故障处理
- 刚学习Db2 对一条 select 语句得疑问.
- 一条Select语句引发的反思
- 一次数据库不繁忙时一条sql语句2个执行计划导致业务超时的故障处理
- 一条执行4秒的sql语句导致的系统问题 (转)
- INSERT INTO语句中直接插入一条SELECT语句
- [oracle]sys_connect_by_path用法(一个select语句中多条数据拼成一条数据)
- 一条Select语句丛生到死的处理过程
- Select查询数据放一个内表,然后在下一条select语句用where语句in 该内表