記我真實的一段維護任務:程序查詢慢到最快也須要15秒?

程序報錯:開始的因爲系統緩衝區空間不足或隊列已滿問題解決辦法html

通常有2點緣由:
a)系統內存不足,狀況表現爲空閒數低於200如下,系統句柄數大的可怕,達到10幾W
b)TCP鏈接數不夠,嚴重的可能致使數據庫鏈接失敗,項目部同事以前也說過這樣的狀況,就是此問題致使的,前提是物理內存/虛擬內存設定值都正常的狀況下增長TCP鏈接數(多是你留做種的緣由,因此tcp的端口(UserPort)請求已經達到你pc上本地設置的界限(MaxUserPort),默認的通常比較小,正廣和的這臺機器可能須要活動的TCP數量太多,因此須要設置大點),能夠試着修改此鍵值,方法以下:
啓動註冊表編輯器,在註冊表中,找到如下子項,而後單擊 $參數(Parameters 翻譯過來就是>>參數<<的意思) HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
在編輯菜單中,單擊新建,而後添加如下注冊表項:
值名稱: MaxUserPort
值類型: 雙字節
值數據: 65534
有效範圍: 5000-65534 (十進制)
默認值: 0x1388 (5000 十進制)
退出註冊表編輯器,而後從新啓動計算機。
二、針對通常的數據庫,具備如下幾點優化法則
  • 一、減小數據訪問(減小硬盤訪問,這個就是咱們程序的事了,項目因爲是老的項目,仍是ASP.NET編寫的,考慮到改源碼起來麻煩,因此後面我通過仔細分析增長了索引)數據庫

  • 二、返回更少的數據(減小網絡傳輸或磁盤訪問)服務器

  • 三、減小交互次數網絡

  • 四、減小服務器CPU及內存開銷tcp

  • 五、利用更多的資源(增長資源)編輯器

通常處理這樣的狀況,
  • 1、修改SQL語句,因爲項目太老,更改源碼麻煩,因此我採用了增長索引,創建索引的優勢:(1.大大加快數據的檢索速度; 2.建立惟一性索引,保證數據庫表中每一行數據的惟一性; 3.加速表和表之間的鏈接; 4.在使用分組和排序子句進行數據檢索時,能夠顯著減小查詢中分組和排序的時間)ide

  • 2、增長索引(彙集索引和惟一索引),在彙集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個彙集索引。 若是某索引不是彙集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非彙集索引相比,彙集索引一般提供更快的數據訪問速度。惟一索引,針對常常查詢的字段,客戶那邊告訴我,有時間、工號和分機號。我主要對這三個常常的字段進行了增長索引。優化

  • 創建索引的語法:CREATE 索引名稱 ON 表名(須要建立索引的字段);spa

通過這樣的調優,速度最慢也能夠1秒就查詢出來了。好了,以上就是問題的解決方法和我我的的一些經驗分享。

本文出自 思考者日記網,轉載請保留此出處!原文地址:http://www.shuyangyang.com.cn/jishuliangongfang/shujuku/2014-03-18/197.html
相關文章
相關標籤/搜索