Optimization

SQL Server 2000 優化作業有一段時間沒有執行

  • October 29, 2013

我們的 SQL Server 2000 過去常常在周日凌晨 3 點執行優化數據庫的工作。不知何故,它被關閉並且一年沒有執行。我們注意到對數據庫的訪問速度很慢。

我們重新打開它,它將執行大約 4 個小時並完成。我們的問題是,當它在預定的周日凌晨 3 點執行時,只要它執行,它就會導致連接的應用程序停止工作。在它被關閉之前,該應用程序將繼續工作,但我相信因為它已經關閉了一年,並且該工作僅在不足以清理數據庫時才執行。

我們應該連續執行 3 次嗎?或者解決這個問題的最佳方法是什麼?

提前致謝!

一年中可能發生了很多導致性能問題的事情。您的“清理工作”沒有執行這一事實可能是也可能不是主要原因。

在開始優化性能之前,您需要做的第一件事是找出您最大的問題是什麼,然後解決它。(獨立於 SQL Server 版本,或者真正獨立於您正在使用的系統。)

SQL Server 2000 提供了一組有限的工具可用於此調查。首先跟踪批處理和過程的執行,看看它們中的哪一個耗時最長,讀取次數最多。在過去一年中,數據以一種現在需要新索引的方式發生變化並非不可能。

如果最終您得出結論認為現有索引最適合您的工作負載,則可以再次查看此“清理工作”。

首先,您需要確定(基於每個表)是否需要重組或重建。重組通常更快,但對改進的影響較小。經過一年的“忽視”,您很可能需要對所有表執行重建。有關更多詳細資訊,尤其是 DBCC DBREINDEX 與 DBCC INDEXDEFRAG部分,請參閱http://technet.microsoft.com/en-us/library/cc966523.aspx 。

正如 Shawn 所提到的,每個表重建/重組操作都需要 SQL Server 2000 中的表鎖。為了緩解這種情況,有兩種選擇:

  1. 升級到支持線上索引維護的更現代版本的 SQL Server
  2. 一次清理一張桌子,然後休息一下,讓其他程序繼續工作。取決於您每晚有多少張桌子,或者有幾張桌子之間有​​一個小時的休息時間。在接下來的晚上地址其他表。您也可以每晚解決 3 到 5 個最分散的表。DBCC SHOWCONTIG可以告訴你一張桌子有多碎片化。(有關詳細資訊,請參閱上面的連結。)

我的猜測是因為您的應用程序在執行時遇到問題,它正在執行索引維護。以下連結提供了SQL Server 2000 中維護計劃的優化選項卡中的選項。

Reorganize data and index pages選項告訴 SQL Server 遍歷數據庫並重建索引。在完成之前,所有這些活動都會導致表鎖定。根據數據庫和索引的大小,它也可能需要一些時間來執行。

沒有辦法解決它不會導致您的應用程序出現一些問題。這只是在業務端確定您的應用程序是否允許中斷執行所需的工作,是的,它是需要的。

引用自:https://dba.stackexchange.com/questions/52365