程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 一條select語句引起的瓶頸問題思考

一條select語句引起的瓶頸問題思考

編輯:更多數據庫知識

情境還原:

公司一項目新上線,剛上線的第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小時。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved