SQL Server 最佳化筆記

來源:互聯網
上載者:User

      最近調優了一個使用JBuilder + JBoss + SQL Server構建的系統,典型的三層結構,前端由JBoss搭建的web伺服器構成,後端使用SQL Server作為資料庫。在調優之前,系統資料表現出的問題就是基本上沒有並發訪問,涉及到資料量大的操作反應特別慢,在多個使用者同時訪問時可能web服務奔潰。

  與營運人員深入瞭解之後,針對最嚴重的case進行了深入瞭解,從web端的日子,程式碼分析,發現主要的問題集中在兩塊,一是代碼邏輯的問題,而是資料庫訪問的耗時。

     SQL Server的版本是2005.其中幾張表資料量特別大,大小都在700-800M,記錄已經達到200百萬行左右。

     SQL Server 2005 提供了SQL Server Profiler來追蹤資料庫內部執行的sql語句,以及Sql語句執行的耗時等等資訊,可以很好的來分析對於表的讀寫效能。在仔細分析SQL Server Profiler的資料之前,先準備一點關於預存程序的知識。 

1.預存程序是在大型資料庫系統中,一組為了完成特定功能的SQL 陳述式集,經編譯後儲存在資料庫中,使用者通過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來執行它。主要是提高了sql語句的執行效率,資料的尋找還是需要做索引2.一是本地暫存預存程序,以井字型大小(#)作為其名稱的第一個字元,則該預存程序將成為一個存放在tempdb資料庫中的本地暫存預存程序,且只有建立它的使用者才能執行它;3.建立create proc sp_name  @[參數名] [類型],@[參數名] [類型]  as  begin  .........  end4.調用exec sp_name [參數名]5.顯示預存程序show procedure status

     使用預存程序之後,可以加速SQL語句執行的前期準備。

   對於一張表資料在10萬行左右,在好的索引下,對這張表執行select語句,耗時基本上可以低於1ms。

 

在同樣的表上建立索引之後的查詢結果對比,表的大小在20M,行數在10萬行左右,建立了好的索引,查詢時間基本上為1ms一下。

 

這張表大小在近800M,資料記錄在160萬行,建立好的索引之後,查詢時間下降到了230ms。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.