none
請問SQL Server 的效能問題 RRS feed

  • 問題

  • 我這裡有從三台資料庫伺服器所追蹤到的Performance Counter數據

    因為我不太清楚要如何從這些數據來尋找系統的效能瓶頸

    因此將Performance Counter數據列出

    希望大家能夠幫我分別找出這三台資料庫伺服器的效能瓶頸,謝謝

     

     

    DB1

    DB2

    DB3

      Memory\Available MBytes

    623.1111365

    319.7275466

    424.5309687

      Memory\Pages/sec

    2.221207986

    130.4486373

    2.481649318

      PhysicalDisk\Avg. Disk Queue   

      Length

    0.170348418

    2.45821967

    0.229459979

      PhysicalDisk\Avg. Disk Read

      Queue Length

    0.047123159

    1.522277099

    0.036371038

      PhysicalDisk\Avg. Disk Write

      Queue Length

    0.123225259

    0.935942571

    0.193088941

      Processor(_Total)\% Processor

      Time

    1.358242027

    13.11192092

    17.13152549

      SQLServer:Access 

      Methods\Worktables From

      Cache Ratio

    98.72357317

    101.951381

    99.69727129

      SQLServer:Buffer

      Manager\Buffer cache hit ratio

    99.86516865

    99.45006163

    99.86033119

      SQLServer: Databases(_Total)

      \Data File(s) Size (KB)

    27330173.8

    52233216.4

    9821057.1

      SQLServer: Databases(_Total)

      \Log File(s) Size (KB)

    244219.8456

    5978729.709

    6669151.448

      SQLServer: Databases(_Total)

      \Percent Log Used

    34.9539283

    69.60844361

    1.812280702

      SQLServer:Memory

      Manager\Target Server Memory

      (KB)

    2425791.268

    2955703.497

    2653933.684

      SQLServer:Memory

      Manager\Total Server Memory

      (KB)

    1969027.561

    2948813.974

    2600102.658

      System\Processor Queue Length

    0.030472921

    0.15361733

    0.10358505

    2007年4月25日 上午 07:32

解答

  • 您好:
    個人會建議使用 SQL Profiler 這個工具,來從伺服器中擷取 SQL Server 2000 的事件,以便事後進行分析,或是當嘗試診斷問題時,用於重新執行特定的一連串步驟。因為 SQL Profiler 可以用於分析下列活動:
  • 透過問題查詢,逐步找出造成問題的原因。
  • 尋找並診斷執行較慢的查詢。
  • 將引發問題的一系列 SQL 陳述式擷取出來,以利在可以診斷問題的測試伺服器上,使用已儲存的追蹤來複寫問題。
  • 監看 SQL Server 的效能,以便進行工作負載的微調作業。
2007年4月27日 上午 06:34
版主
  • 你可以不用改程式,但你可以做的是:

     

    1. 重建資料庫索引。

    2. 更新資料庫的統計數值。

    3. 如果使用 SQL Profiler 抓出效能差的是檢視表或預存程序,可以重建它。

    2007年4月30日 上午 09:09
    版主
  • Dear Sir,

     

    就現有的資料來看, DB1與DB3的效能沒有很大的問題, DB2的話, 看來是記憶體不夠.

    我估計DB2上應該是有4GB的RAM, 同時您啟用了SQL AWE, 並且指定了Max Server Memory到3GB. 然而您可以看到SQL的Total Server Memory已經與Target Server Memory相當接近. 這也導致了DB2的Disk Queue Length的值較大. 我們也可以估計這是可能在做swapping的動作, 故效能會較差.

    若是DB1, DB3有效能上的問題, 我們建議應該去看一下是否有deadlock/blocking的狀況.

     

    Best regards,

    Colin Lin

    微軟技術支援中心

    2007年5月4日 上午 01:46
  • 所有回覆

    • Sir:

      請問您覺得您在執行程式的時候有效能問題嗎??這些Counter是在什麼情況下搜集的呢??

      2007年4月25日 上午 09:19
    •  sqldoctor 寫信:

      Sir:

      請問您覺得您在執行程式的時候有效能問題嗎??這些Counter是在什麼情況下搜集的呢??

       

      是的,在程式執行時有效能問題,這些Counter是在程式運作時蒐集的

      2007年4月27日 上午 02:57
    • 您好:
      個人會建議使用 SQL Profiler 這個工具,來從伺服器中擷取 SQL Server 2000 的事件,以便事後進行分析,或是當嘗試診斷問題時,用於重新執行特定的一連串步驟。因為 SQL Profiler 可以用於分析下列活動:
    • 透過問題查詢,逐步找出造成問題的原因。
    • 尋找並診斷執行較慢的查詢。
    • 將引發問題的一系列 SQL 陳述式擷取出來,以利在可以診斷問題的測試伺服器上,使用已儲存的追蹤來複寫問題。
    • 監看 SQL Server 的效能,以便進行工作負載的微調作業。
    2007年4月27日 上午 06:34
    版主
  • 非常謝謝您的答覆,因為我並不是程式開發人員,所以就算是找出執行較慢的查詢,

    我也沒辦法請開發人員修改程式,所以我只能針對系統面去查詢這三個資料庫伺服器的效能瓶頸究竟為何?

    2007年4月30日 上午 09:02
  • 你可以不用改程式,但你可以做的是:

     

    1. 重建資料庫索引。

    2. 更新資料庫的統計數值。

    3. 如果使用 SQL Profiler 抓出效能差的是檢視表或預存程序,可以重建它。

    2007年4月30日 上午 09:09
    版主
  •  Zero_Yang 寫信:
    非常謝謝您的答覆(恕刪...)
    先前提到可以:
  • 尋找並診斷執行較慢的查詢。
  • 監看 SQL Server 的效能,以便進行工作負載的微調作業。以第一個功能為例,在找到執行較慢的查詢之後,您可以嘗試建立適當的索引,比方說,查詢的欄位與條件經常會使用「會員編號」這個欄位,就可以考慮替「會員編號」建立索引。當然所建立的索引適不適合,還需要透過其他的工具或 T-SQL 指令,比方說 SHOW PLAN 陳述式、使用 SQL Server Profiler 來加以確認。
  • 2007年5月1日 下午 12:29
    版主
  • 就所陳列的數字來看,DB2的有個數值令人覺得有點奇怪

    Memory\Pages/sec,因為高的可怕,另外,上列前輩所提的方法才能查出

    真正原因為何,僅提供一些小看法,請您參考

    2007年5月3日 上午 06:43
  • Dear Sir,

     

    就現有的資料來看, DB1與DB3的效能沒有很大的問題, DB2的話, 看來是記憶體不夠.

    我估計DB2上應該是有4GB的RAM, 同時您啟用了SQL AWE, 並且指定了Max Server Memory到3GB. 然而您可以看到SQL的Total Server Memory已經與Target Server Memory相當接近. 這也導致了DB2的Disk Queue Length的值較大. 我們也可以估計這是可能在做swapping的動作, 故效能會較差.

    若是DB1, DB3有效能上的問題, 我們建議應該去看一下是否有deadlock/blocking的狀況.

     

    Best regards,

    Colin Lin

    微軟技術支援中心

    2007年5月4日 上午 01:46
  • 非常謝謝各位的熱心協助
    2007年5月9日 上午 03:06