语境还原:
公司推出了一个新项目。在联机
操作的第二天,它
发现了数据库
服务器和IIS服务器的
网络IO的瓶颈。1GB的网络带宽占用的70% - 100%,即每秒的数据
传输700mb-1gb。数据库使用的
内存高达21gb。
IIS服务器CPU的使用率
经常爆炸到80% - 90%,这导致
网站频繁
连接超时。
原因:晚上,网站必须暂时
关闭,服务器
维护,进行全面
检查和跟踪,发现一句话是由一句话造成的:选择
SELECT * FROM表
这句话,语法是没有问题的,但对problem.table1应用存储在大约100000行数据,和表数据将增长每天数以万计的。
为了计算行的总数,这个语句经常被调用,并且每秒刷新少于1000次。
它也导致了网络的瓶颈。
解决方案:SELECT语句更改为
复制代码代码如下所示:
select count(*)从表1
可以解决的问题,网络IO数据减少到少于10MB的立即和数据库使用内存也保持在预期范围为12GB。
这似乎是一个非常简单的问题,但事实并非如此,要解决这个问题需要6个小时,检查这个问题1小时,然后
修改代码5小时。