Bagikan melalui


Konsep TxF Dasar

Isolasi Baca

Transactional NTFS (TxF) memberikan konsistensi baca-berkomitmen.

Penulis yang ditransaksikan mengacu pada handel file yang ditransaksikan yang dibuka dengan izin apa pun yang bukan bagian dari akses baca generik tetapi merupakan bagian dari akses tulis generik. Penulis yang ditransaksikan melihat versi terbaru file yang menyertakan semua perubahan oleh transaksi yang sama. Hanya ada satu penulis yang ditransaksikan per file. Penulis yang tidak ditransaksikan selalu diblokir oleh penulis yang ditransaksikan, bahkan jika file dibuka dengan izin tulis bersama.

Pembaca yang ditransaksikan mengacu pada handel file yang ditransaksikan yang dibuka dengan izin apa pun yang merupakan bagian dari akses baca generik tetapi bukan bagian dari akses tulis generik. Pembaca yang ditransaksikan melihat versi file yang diterapkan yang ada pada saat handel file dibuka. Pembaca yang ditransaksikan diisolasi dari efek penulis yang ditransaksikan. Ini memberikan tampilan file yang konsisten hanya untuk masa pakai handel file dan memblokir penulis yang tidak ditransaksikan.

Catatan

Ketika handel telah dibuka untuk modifikasi dengan fungsi CreateFileTransacted , semua pembukaan file berikutnya dalam transaksi tersebut baik baca-saja atau tidak dikonversi oleh sistem menjadi penulis yang ditransaksikan untuk tujuan isolasi dan semantik transaksional lainnya. Ini berarti bahwa kemudian, ketika handel dibuka untuk akses baca-saja, handel tidak menerima tampilan file sebelum dimulainya transaksi; ini menerima tampilan transaksi aktif file.

Handel file yang tidak ditransaksikan tidak melihat perubahan apa pun yang dilakukan dalam transaksi hingga transaksi dilakukan. Handel file yang tidak ditransaksikan menerima tampilan terisolasi yang mirip dengan pembaca yang ditransaksikan, tetapi tidak seperti pembaca yang ditransaksikan, ia menerima pembaruan file ketika penulis yang ditransaksikan melakukan transaksi.

Tingkat isolasi

TxF menyediakan isolasi berkomitmen baca. Ini berarti bahwa pembaruan file tidak terlihat di luar transaksi. Selain itu, jika file dibuka lebih dari sekali saat membaca file dalam transaksi, Anda mungkin melihat hasil yang berbeda dengan setiap pembukaan berikutnya. File yang tersedia saat pertama kali Anda mengaksesnya mungkin tidak tersedia (karena dihapus), atau sebaliknya.

Penguncian Transaksi

Membuat penulis yang ditransaksikan pada file secara transaksional mengunci file. Setelah file dikunci oleh transaksi, operasi sistem file lain di luar transaksi penguncian yang mencoba mengubah file yang dikunci secara transaksional akan gagal dengan ERROR_SHARING_VIOLATION atau ERROR_TRANSACTIONAL_CONFLICT.

Tabel berikut ini meringkas penguncian transaksi.

File saat ini dibuka oleh

Pembukaan file dicoba oleh

Ditransaksikan

Tidak Ditransaksikan

Pembaca

Pembaca/Penulis

Pembaca

Pembaca/Penulis

Pembaca yang Ditransaksikan

Ya

Ya

Ya

No2

Pembaca/Penulis yang Ditransaksikan

Ya

No2

Ya

No2

Pembaca Yang Tidak Ditransaksikan

Ya

Ya

Ya

Ya

Pembaca/Penulis yang Tidak Ditransaksikan

No1

No1

Ya

Ya

  1. Gagal dengan ERROR_TRANSACTIONAL_CONFLICT
    2. Gagal dengan ERROR_SHARING_VIOLATION

Jika Anda membuka aliran bernama untuk modifikasi yang menggunakan transaksi, seluruh file harus dikunci.

Selain penguncian transaksi, aturan berbagi file NTFS yang khas berlaku.

Anda perlu mempertimbangkan dua mode berbagi file berikut secara paralel:

  • Mode penguncian transaksi.
  • Mode berbagi file normal.

Mode mana pun yang lebih ketat adalah mode yang berlaku.