一条select语句引起的瓶颈问题思考
情境还原:
公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB。
IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。
原因:晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:
Select * From Table1
这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。
为了统计总行数,频频调用这语句,每秒刷新不低于1000次。
也因此导致网络出现瓶颈。
解决:后面把Select语句改成
即可解决问题,网络 IO数据马上降至10MB以下,数据库使用内存也保持在预计范围12GB。
看似非常简单的问题,其实不然。解决这问题,所花的时间周期是6小时,检查问题使用1小时,修改代码使用5小时。
公司一项目新上线,刚上线的第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小时。
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
热门教程
SQL Server代理服务无法启动的解决方法2019-01-20
asp.net连接查询SQL数据库并把结果显示在网页上(2种方2019-01-18
sql server 获取系统时间的方法2019-01-21
深入C++ string.find()函数的用法总结2019-01-18
SQL Server 聚集索引和非聚集索引的区别分析2019-02-22
关于sql server批量插入和更新的两种解决方案2019-01-19
SQL语句 一个简单的字符串分割函数2019-02-22
SQL Server数据库的高性能优化经验总结2019-02-22
sql动态行转列的两种方法2019-01-19
SQLServer 跨库查询实现方法2019-02-20