Menjelaskan Properti ACID
Atomicity, consistency, isolation, dan durability dengan contoh konkret.
Menjelaskan Properti ACID adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.
Mengapa Pewawancara Menanyakan ACID
Ketika pewawancara senior berkata "jelaskan ACID kepada saya", mereka tidak sedang menguji apakah Anda menghafal empat kata. Mereka ingin mengetahui apakah Anda memahami apa yang dijamin basis data ketika banyak pengguna mengaksesnya secara bersamaan.
ACID adalah singkatan dari Atomisitas, Konsistensi, Isolasi, dan Durabilitas. Setiap basis data transaksional (PostgreSQL, MySQL/InnoDB, SQL Server, Oracle) menjanjikan keempat properti ini untuk operasi yang dibungkus dalam sebuah transaksi.
Jawaban terbaik mengaitkan setiap huruf dengan kegagalan konkret yang dapat dicegahnya. Pada adegan-adegan berikutnya, kita akan melakukan hal tersebut.
Apa Itu Transaksi?
Transaksi adalah unit pekerjaan yang diperlakukan basis data sebagai satu langkah tunggal yang tidak dapat dibagi. Anda membukanya dengan BEGIN, menjalankan satu atau beberapa pernyataan, lalu menggunakan COMMIT untuk menjadikannya permanen atau ROLLBACK untuk membuang semuanya.
Contoh klasiknya adalah transfer bank: mendebit satu rekening dan mengkredit rekening lain. Keduanya harus terjadi, atau tidak satu pun. Transaksi adalah pembungkus yang memungkinkan Anda memberikan jaminan tersebut.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;A = Atomicitas
Atomicitas berarti transaksi bersifat semua atau tidak sama sekali. Jika salah satu pernyataan gagal atau server mengalami kerusakan di tengah proses, semua perubahan dalam transaksi tersebut dibatalkan dan dikembalikan seolah-olah transaksi tidak pernah dimulai.
Dalam contoh transfer, jika pengkreditan gagal setelah pendebitan berhasil, atomicitas menjamin bahwa pendebitan juga dibatalkan. Anda tidak akan kehilangan uang akibat operasi yang hanya selesai sebagian.
Ungkapan dalam wawancara: "Atomicitas memastikan transaksi disahkan sebagai satu kesatuan atau tidak sama sekali, tanpa menyisakan keadaan sebagian."
Atomicitas dalam Praktik
Di sini, pembaruan kedua melanggar batasan CHECK (saldo tidak boleh negatif). Basis data membatalkan transaksi tersebut, dan ROLLBACK juga membatalkan pembaruan pertama.
Poin penting untuk wawancara: setelah pembatalan, rekening 1 masih memiliki saldo awalnya. Tidak ada penulisan sebagian yang tersisa di tabel.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- next line fails: balance would go below 0
UPDATE accounts SET balance = balance - 999999 WHERE id = 2;
ROLLBACK; -- account 1 is restored to its original balanceC = Konsistensi
Konsistensi berarti transaksi memindahkan basis data dari satu keadaan yang valid ke keadaan valid lainnya. Setiap transaksi yang disahkan harus mematuhi semua aturan yang ditetapkan: batasan, kunci asing, pemicu, dan kaskade.
Jika transaksi akan menyebabkan suatu batasan dilanggar (kunci asing tanpa pasangan, kunci utama duplikat, atau CHECK yang gagal), basis data menolak untuk mengesahkannya.
Nuansa yang perlu disebutkan: basis data menegakkan aturan yang dideklarasikan, tetapi invarian tingkat aplikasi ("seorang pengguna dapat memiliki paling banyak 3 sesi aktif") menjadi tanggung jawab Anda kecuali dimodelkan sebagai batasan.
Konsistensi yang Ditegakkan oleh Batasan
Konsistensi pada dasarnya merupakan keseluruhan aturan skema Anda. Di bawah ini, kunci asing menjamin bahwa Anda tidak akan pernah dapat menyisipkan pesanan untuk pelanggan yang tidak ada.
Jika penyisipan mengacu pada pelanggan yang tidak ada, transaksi gagal, atomicitas membatalkannya, dan konsistensi tetap terjaga. Inilah alasan pewawancara mengatakan bahwa atomicitas dan konsistensi bekerja bersama.
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT NOT NULL REFERENCES customers(id),
amount NUMERIC(10,2) CHECK (amount > 0)
);
-- This fails if customer 999 does not exist, keeping data consistent
INSERT INTO orders (id, customer_id, amount) VALUES (1, 999, 50.00);I = Isolasi
Isolasi berarti transaksi yang berjalan bersamaan tidak saling mengganggu. Idealnya, setiap transaksi berperilaku seolah-olah berjalan sendirian, meskipun puluhan transaksi berjalan pada waktu yang sama.
Dalam praktiknya, basis data menyediakan berbagai tingkat isolasi yang menukar ketatnya aturan dengan kinerja. Tingkat yang lebih lemah mengizinkan anomali tertentu (pembacaan kotor, pembacaan hantu) sebagai imbalan atas konkurensi yang lebih tinggi.
Ini adalah bagian paling luas dalam wawancara ACID, jadi dua pelajaran berikutnya membahas tingkat isolasi dan anomali pembacaan secara mendalam.
Mengapa Isolasi Merupakan Spektrum
Isolasi sempurna (SERIALIZABLE) mahal karena harus mencegah setiap kemungkinan konflik akibat penyisipan urutan operasi, biasanya melalui penguncian atau pembatalan transaksi.
Karena itu, standar SQL menetapkan empat tingkat. Jebakan umum dalam wawancara: kandidat menganggap isolasi bersifat biner. Padahal tidak. Anda secara eksplisit memilih seberapa besar isolasi yang diinginkan.
READ UNCOMMITTEDpaling lemahREAD COMMITTEDREPEATABLE READSERIALIZABLEpaling kuat
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;D = Durabilitas
Durabilitas berarti setelah transaksi disahkan, perubahannya tetap bertahan meskipun terjadi kerusakan, kehilangan daya, atau mulai ulang. Transaksi yang disahkan tersimpan di penyimpanan permanen.
Basis data mencapai hal ini dengan log penulisan di muka (WAL): perubahan ditulis ke log permanen sebelum berkas data diperbarui. Saat dimulai ulang, mesin basis data memutar ulang log tersebut untuk memulihkan pekerjaan yang sudah disahkan tetapi belum ditulis ke berkas utama.
Ungkapan dalam wawancara: "Durabilitas dijamin oleh WAL; pengesahan hanya selesai setelah catatan log disalurkan ke cakram."
Merangkai Transfer Bank
Satu transfer menerapkan keempat properti sekaligus:
- Atomicitas: kedua pembaruan diterapkan atau tidak satu pun.
- Konsistensi: CHECK menjaga agar saldo tidak negatif.
- Isolasi: pembaca yang berjalan bersamaan tidak melihat transfer yang baru selesai sebagian.
- Durabilitas: setelah COMMIT, saldo baru tetap bertahan meskipun terjadi kerusakan.
Kemampuan mengaitkan satu contoh konkret dengan keempat huruf tersebut adalah hal yang benar-benar menghasilkan nilai dalam wawancara.
BEGIN;
UPDATE accounts SET balance = balance - 100
WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Pertanyaan Lanjutan yang Umum
Pewawancara sering menelusuri batas-batas konsep. Bersiaplah untuk pertanyaan berikut:
- "Properti apa yang ditegakkan oleh kunci asing?" Konsistensi.
- "Apa yang melindungi Anda dari kerusakan server di tengah transaksi?" Atomicitas (pembatalan transaksi yang belum disahkan) serta durabilitas (pemutaran ulang transaksi yang sudah disahkan).
- "Apakah isolasi gratis?" Tidak, isolasi yang lebih kuat mengurangi konkurensi.
- "Apakah penyimpanan NoSQL menyediakan ACID?" Banyak di antaranya menukarnya dengan ketersediaan (BASE); katakan bahwa hal ini bergantung pada mesinnya.
Uji Cepat
Uji pemahaman Anda tentang fungsi setiap properti ACID.
Ringkasan: ACID dalam Satu Tarikan Napas
Sekarang Anda dapat menjawab pertanyaan tersebut dengan jelas:
- Atomicitas - semua atau tidak sama sekali; pekerjaan yang hanya selesai sebagian dibatalkan.
- Konsistensi - setiap pengesahan mematuhi batasan dan menghasilkan keadaan yang valid.
- Isolasi - transaksi yang berjalan bersamaan tidak merusak satu sama lain; tingkat keketatannya dapat disesuaikan.
- Durabilitas - data yang disahkan tetap bertahan setelah kerusakan, dengan dukungan log penulisan di muka.
Kaitkan setiap huruf dengan kegagalan konkret yang dicegahnya, dan Anda akan melewati bagian pembuka wawancara konkurensi dengan lancar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menjelaskan Properti ACID” gratis?
Ya — teks lengkap “Menjelaskan Properti ACID” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menjelaskan Properti ACID”?
Atomicity, consistency, isolation, dan durability dengan contoh konkret. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?
Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Menjelaskan Properti ACID” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?
Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menjelaskan Properti ACID
- Empat Tingkat Isolasi
- Pembacaan Kotor, Tidak Berulang, dan Hantu
- Deadlock, Penguncian, dan MVCC