Share via


交易式 NTFS 的效能考慮

交易式 NTFS (TxF) 經過仔細設計,在類似的案例中,通常會比一般用途的交易替代專案執行效能更好。 不過,相較于非交易的作業,檔案系統交易的負擔會比非交易的作業多,而且相較于非交易 I/O,某些 I/O 效能會降低。 效能關鍵性應用程式應該執行技術採用資格週期,以評估交易檔案系統作業的效能影響。

TxF 作業概觀

TxF 會使用 復原 記錄來記錄將檔案系統放回一致狀態所需的變更,亦稱為復原,如果發生交易中止。 相較于非交易檔案系統作業,此復原記錄會產生額外的 I/O,而且是 TxF 效能額外負荷的來源。

TxF 運作方式的高階摘要如下:

  • 當交易進行時,TxF 會將 復原 記錄寫入其記錄檔中,以便每次修改檔案系統。 如果發生中止,則會剖析這些復原記錄,以將檔案系統放回交易開始之前的狀態。
  • 中繼資料變更復原記錄只會描述檔案系統中繼資料的變更。 這的一些範例包括移動、重新命名、附加和屬性變更。 針對中繼資料變更復原記錄,復原變更所需的所有資訊都會儲存在記錄檔中並儲存在記錄檔中。
  • 覆寫復原記錄描述檔案部分的覆寫。 發生檔案覆寫時,檔案的原始內容會儲存在隱藏目錄中的特殊復原檔案中,而覆寫復原記錄會指向此檔案。 當檔案更新最終從快取排清到磁片時,復原檔案的內容也必須排清,因此交易的檔案覆寫最多可以產生兩個額外的隨機 I/O 作業:一個用來讀取舊資料,另一個用來寫入復原檔案。 這些額外的 I/O 作業是 TxF 的效能成本。
  • 發生認可時,TxF 會先排清所有復原資訊,然後排清實際的檔案變更,然後寫入並排清認可記錄。 如果沒有復原檔案可排清,相對於非交易 I/O 的唯一額外 TxF 額外負荷是記錄檔本身排清。 不過,記錄排清會導致有效率的大型循序寫入,因此效能成本最少。
  • TxF 已針對認可進行優化。 預期大部分交易都會成功,且不需要復原,因此交易的所有復原記錄預期都會未使用。 從效能觀點來看,TxF 認可作業的速度很快,而且復原需要大量資源。
  • 復原比認可更耗用資源。 在復原期間,交易中所做的所有變更都必須未完成。 一般而言,復原持續時間可能大致相同,因此原本進行變更所花費的時間大致相同。 例如,如果進行所有變更需要 1 秒,則可能需要大約 1 秒才能復原這些變更。 對於很長的交易,復原可能會產生額外的效能影響。 例如,如果系統必須在系統停止回應且必須執行未排程的重新開機時自動回復交易,系統開機時間可能會延遲。

從上一個清單繪製之效能的摘要結論如下:

  • 涉及檔案覆寫之交易的 TxF 效能成本可能相當重要。
  • 僅涉及中繼資料作業之交易的 TxF 效能成本可能相對低,前提是使用大型交易。 大型交易是針對每個認可記錄有許多復原記錄時。

最佳效能的建議

將 TxF 額外負荷分攤到較大的交易。 例如,如果您有N組變更要進行,其中每個變更都有M步驟,而且您可以選擇以M步驟的 N 筆交易執行此動作,或全部做為具有M*N步驟的單一交易,則後者選項會更有效率。

請考慮對非常大型交易開機的可能影響。 如先前所述,如果系統需要以開機時間的形式執行自動復原,復原可能會變慢,而且會延遲開機時間。 交易越大,延遲越長。

將交易保留至大部分的中繼資料作業。 這是 TxF 針對 優化的內容,一般而言,效能與大型中繼資料交易的非交易檔案 I/O 相同。 有效率中繼資料 TxF 函式的範例包括MoveFileTransacted、SetFileAttributesTransactedCopyFileTransactedDeleteFileTransactedCreateHardLinkTransacted和附加的寫入 (呼叫WriteFile函式時,檔案指標位於檔案結尾,或EOF) 。 當檔案指標不在 EOF 時,資源密集的非中繼資料作業範例就是呼叫 WriteFile 函式。

TxF 效能期望摘要

針對就地更新,檔案區段的覆寫速度會比非交易的檔案 I/O 慢很多,而檔案系統中繼資料作業的 TxF 效能會比起大型交易 (、建立、移動和附加) 相當於非交易的檔案 I/O。