Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Transaksi Basis Data: Menjaga Data Tetap Konsisten

Pelajaran 13 dari 14

Akses bersamaan dan pengantar isolasi

Anomali isolasi: dirty read, non-repeatable read, phantom

Setelah pelajaran ini kamu bisa menamai anomali isolasi standar SQL dari definisinya, membaca tabel level isolasi PostgreSQL sebagai perilaku PostgreSQL, menjelaskan isolasi serializable SQLite, dan membaca dua angka laporan secara konsisten.

±14 menitDiperiksa 7 Okt 2026

Materi

Isolasi menentukan kapan perubahan satu transaksi terlihat oleh transaksi lain. Dokumentasi PostgreSQL merangkum fenomena yang dipakai standar SQL untuk mendefinisikan level isolasi. Dirty read: transaksi membaca data yang ditulis transaksi lain yang belum di-commit. Non-repeatable read: transaksi membaca ulang data dan mendapati data itu sudah diubah transaksi lain yang commit di antaranya. Phantom read: transaksi menjalankan ulang kueri bersyarat dan himpunan baris yang cocok sudah berubah karena transaksi lain yang baru commit.

Tabel di dokumentasi itu menggambarkan PostgreSQL: level bawaannya Read Committed, di mana dua SELECT dalam satu transaksi bisa melihat data berbeda; Repeatable Read melihat satu snapshot sejak awal transaksi. Tabel itu bukan pengaturan SQLite. Halaman isolasi SQLite menyatakan bahwa koneksi terpisah tidak pernah melihat perubahan yang belum di-commit (kecuali shared cache dengan read_uncommitted), dan semua transaksinya serializable karena penulisan benar-benar diserialkan. Di mode WAL, pembaca melihat snapshot sejak transaksi bacanya dimulai. Di dalam satu koneksi tidak ada isolasi: SELECT melihat perubahan koneksi itu sendiri yang belum di-commit.

Akibat praktisnya: dua SELECT terpisah di mode autocommit adalah dua transaksi. Laporan yang mengambil jumlah baris dan total dari dua pernyataan bisa menggabungkan dua keadaan berbeda. Ambil keduanya dalam satu pernyataan, atau buka BEGIN sebelum SELECT pertama dan tutup sesudah yang terakhir.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Dalam satu transaksi, aplikasi membaca saldo rekening Budi: Rp150.000. Transaksi lain menambah saldo Budi lalu commit. Aplikasi membaca saldo Budi lagi dalam transaksi yang sama dan mendapat Rp200.000. Anomali apa ini?

Pilih satu jawaban

Latihan 2 dari 3

Dalam satu transaksi, aplikasi menghitung pesanan berstatus 'baru' dan mendapat 12. Transaksi lain menambah satu pesanan 'baru' lalu commit. Kueri yang sama dijalankan ulang dalam transaksi pertama dan mendapat 13. Anomali apa ini?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke