我有一個數據庫,其中包含大量當前爲NTEXT的字段。SQL Server,將NTEXT轉換爲NVARCHAR(MAX)
升級到SQL 2005後,我們運行了一些將這些轉換爲NVARCHAR(MAX)的性能測試。
如果你讀這篇文章:
http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx
這說明了一個簡單的ALTER COLUMN不會將數據重新組織成行。
我用我的數據體驗了這一點。如果我們只是運行ALTER COLUMN,我們實際上在某些地區的性能會差很多。但是,如果我爲所有這些字段運行UPDATE TABLE SET Column = Column,那麼我們將獲得極大的性能提升。
我遇到的問題是數據庫由成百上千個記錄的這些列組成。一個簡單的測試(在低性能虛擬機上)有一張表,其中包含一個包含700萬條記錄的單個NTEXT列,需要5個小時才能更新。
任何人都可以提供任何建議,如何以更有效的方式更新數據,最大限度地減少停機時間和鎖?
編輯:我的備份解決方案是更新塊中的數據隨着時間的推移,但是,與我們的數據,這導致更糟糕的表現,直到所有的記錄已更新,這個時間越短越好,所以我仍然尋找更快的方式來更新。
是的,這是我目前的計劃,需要很多組織才能完成所有工作,但應該可以實現。我也一次只更新一個字段,所以在我準備更新該列之前,我的性能不會下降。我只是希望有一些神奇的解決方案,我不知道。 – 2009-01-28 11:51:53