2012-03-28 54 views
2

如果我有一個varbinary(Max)數據類型的表並且列上有FILESTREAM屬性。現在我需要存儲另一個二進制數據,但沒有FILESTREAM屬性。那麼,如果我在同一個表上添加另一個帶有VARBINARY(MAX)數據類型的列,會不會有任何性能問題?如果我使用FILESTREAM屬性分隔表並創建另一個單獨的表來存儲其他VARBINARY(MAX)數據,我可以獲得更快的性能嗎?包含多個varbinary列的表

回答

0

爲你這個問題。你可以。 Filestream是sqlserver2008中的新功能,並在2012年更改名稱,調用fileTable。 我測試過了。這個功能是使用DB管理文件,並且上傳文件約5M/s。 爲您的其他專欄,如果您未打開文件流,該文件將被更改爲二進制文件,並存儲在sqlserver數據文件中。 打開文件流,該文件將存儲服務器,並由sqlserver管理。 對於你的第二個問題,我不是100%肯定的,但是如果你使用文件流,它會獲得更多的效益,需要關注備份和存儲。

一年前,我在我們的系統中實現了這個功能,並且我有shcame,如果你願意的話,我會寄給你的。 對不起,我的英語不好。如果你對同一個表

當FILESTREAM屬性設置再添VARBINARY(MAX)

0

你的表現可能會影響,SQL Server存儲在NT文件系統中的BLOB數據,並保持一個指針文件,在桌子裏。這允許SQL Server利用NTFS I/O流式傳輸功能。並減少了SQL引擎上的開銷。在你的情況下,VARBINARY(MAX)數據類型的MAX類型(varchar,nvarchar和varbinary)不能作爲連續的內存區域在內部存儲,因爲它們可能長到2Gb。所以他們必須用流媒體接口來表示。

,如果你確信你的文件很小,你可以去VARBINARY(MAX)其他明智的,如果他們是更大的thab 2GB FILESTREAM是你

最好的選擇,他們會影響性能非常

是的,我會建議你創建另一個單獨的表來存儲其他VARBINARY(MAX)數據