

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Definisi Tingkat Isolasi
<a name="transactions-isolation-levels"></a>

“I” di `ACID` singkatan dari *Isolasi*. Tingkat isolasi transaksi menentukan berapa banyak atau sedikit transaksi bersamaan lainnya dapat mempengaruhi data yang beroperasi.

[SQL:1992 standar](http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt) membuat perbendaharaan kata untuk menerangkan tingkat isolasi. Ini mendefinisikan tiga jenis interaksi (yang disebut *fenomena*) yang dapat terjadi antara dua transaksi bersamaan, `Tx1` dan `Tx2`:
+ `Dirty read` – Hal ini terjadi ketika `Tx1` memodifikasi item, dan kemudian `Tx2` membaca item tersebut sebelum `Tx1` telah melakukan perubahan. Kemudian, jika `Tx1` tidak pernah berhasil melakukan perubahan, atau kembali, `Tx2` telah membaca nilai yang tidak pernah berhasil masuk ke dalam database.
+ `Non-repeatable read` – Hal ini terjadi ketika `Tx1` membaca item, maka `Tx2` memodifikasi atau menghapus item tersebut dan melakukan perubahan, kemudian `Tx1` mencoba membaca ulang item tersebut. `Tx1` sekarang membaca nilai yang berbeda dari sebelumnya, atau menemukan bahwa item tidak lagi ada.
+ `Phantom read` – Hal ini terjadi ketika `Tx1` membaca satu set item yang memenuhi kriteria pencarian, dan kemudian `Tx2` menambahkan item baru yang memenuhi kriteria pencarian, kemudian `Tx1` mengulangi pencarian. `Tx1` sekarang memperoleh satu set item yang berbeda daripada sebelumnya.

Masing-masing dari tiga jenis interaksi dapat menyebabkan inkonsistensi dalam data yang dihasilkan dalam database.

SQL:1992 standar mendefinisikan empat tingkat isolasi yang memiliki jaminan yang berbeda dalam hal tiga jenis interaksi dan inkonsistensi yang dapat mereka hasilkan. Pada keempat tingkat, transaksi dapat dijamin untuk mengeksekusi sepenuhnya atau tidak sama sekali:
+ `READ UNCOMMITTED` – Memungkinkan semua tiga jenis interaksi (yaitu, dirty reads, non-repeatable reads, dan phantom reads).
+ `READ COMMITTED` – Dirty reads sifatnya tidak mungkin, tapi nonrepeatable dan phantom reads mungkin.
+ `REPEATABLE READ` – Tidak satupun dari dirty read dan nonrepeatable read sifatnya mungkin, tetapi phantom read masih mungkin.
+ `SERIALIZABLE` –  Tak satu pun dari tiga jenis fenomena interaksi dapat terjadi.

Multiversion concurrency control (MVCC) memungkinkan satu jenis lain dari isolasi, yaitu *SNAPSHOT* isolasi. Ini menjamin bahwa transaksi beroperasi pada snapshot data seperti saat transaksi dimulai, dan bahwa tidak ada transaksi lain dapat mengubah snapshot itu.