程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL Server誤區30日談 第18天 有關FileStream的存儲,垃圾回收以及其它

SQL Server誤區30日談 第18天 有關FileStream的存儲,垃圾回收以及其它

編輯:更多數據庫知識

誤區 #18:如下多個有關FileStream的誤區

全部錯誤

18 a)FileStream數據可以在遠程存儲

    不能,由於FileStream數據容器(指的是存放FileStream文件的NTFS文件夾,杜撰出來的術語)必須像數據文件或日志文件那樣符合本地存儲策略-也就是說,這個數據容器必須放在對於運行SQL Server的Windows Server是本地存儲(譯者注:也就是在‘計算機'裡能看到的存儲,DAC當然是了,其實SAN這類不直接連接服務器的也算是)訪問FileStream數據只要客戶端連接到了SQL Server服務器並獲取響應的事務上下文後,就可以通過UNC路徑進行訪問了。

18 b)FileStream的數據容器可以嵌套

    不能,對於同一個數據庫的兩個不同的FileStream容器可能在同一個目錄下,但是卻不能嵌套。而對於不同數據庫的FileStream容器無法在同一個目錄下。我的一篇博文有一段代碼能說明這一點:Misconceptions around FILESTREAM storage。

18 c)對於FileStream的更新可以部分更新

    對於任何FileStream的更新都會導致創建一個全新的FileStream文件,這個操作會被日志原原本本的記錄下來。這也就是為什麼FileStream不能被用於數據庫鏡像。這麼多數據如果用於鏡像的話那後果簡直不可想象,只能希望未來的SQL Server版本可以修改這種機制以允許部分更新。

18 d)FileStream會在不需要的時候立刻被垃圾回收

    錯誤。FileStream數據會在不再需要並且到了下一個Checkpoint的時候進行垃圾回收。這點並不是那麼直接以至於很多人對FileStream的回收機制存在誤區。

18 f)FileStream存放的目錄以及文件名是隨機取得

    其實不然,FileStream的文件名其實代表的是創建其操作對應LSN號。表和列的GUID目錄名是可以在系統表中獲取到。

我下面兩篇博文對此有了更詳細的解釋:

  • FILESTREAM directory structure 解釋了如何從一個FileStream所在行來得知其名稱

  • FILESTREAM directory structure - where do the GUIDs come from? 可以望文生義的知道這篇文章所講述的內容:-)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved