上一大桌改變給定列的XML架構集合時,我看到我們的企業應用了巨大的性能損失。簡單地說,我們正在做這樣的事情:XML架構集合變化 - 巨大的性能擊中
ALTER TABLE HugeTable ALTER COLUMN CustomFields XML
(注:CustomFields以前綁定到XML(CustomFieldsSchemaCollection,但當然我們需要修改XML架構,所以我們需要這個語句,使該模式可以修改)
然後,修改後CustomFieldSchemaCollection,我們這樣做:
ALTER TABLE HugeTable ALTER COLUMN CustomFields XML(CustomFieldSchemaCollection)
第一條語句需要8分鐘,第二次發言需要10分鐘
我們發現,我們可以通過使用稍微優化的第一條語句(50%的性能提升)以下:
ALTER TABLE HugeTable ALTER COLUMN CustomFields nvarchar(max)
的效果是,第一個語句需要4分鐘,第二次發言需要10(所以,14分鐘,從18下降)。
底線的問題是... 有沒有辦法做到這一點「XML模式重新綁定」(或任何一個調用它),以避免SQL Server的完全不必要的和多餘的每一個值的檢查方式在列中? (注意:是的,我們可以安全地假設該表中現有的XML數據將符合新的xml架構集合。)
感謝任何能夠協助的人!
,如果這是一個時間的變化,需要15-20分鐘的大事情是什麼? – 2009-09-17 13:18:38
KM:很好的問題!這是升級過程的一部分。不幸的是,即使半大型數據庫它採取了很長時間 - 時間 - 並導致升級失敗(超時錯誤)。作爲一家公司,我們正試圖擺脫「只是增加超時閾值」的解決方案,因爲這太過於刁鑽我們。 – Garrett 2009-09-17 18:17:29