Sifat ACID Diterangkan
Keatomikan, ketekalan, pengasingan dan ketahanan dengan contoh yang nyata.
Sifat ACID Diterangkan ialah pelajaran Persediaan Temu Duga SQL percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga SQL, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Mengapa Penemu Duga Bertanya tentang ACID
Apabila penemu duga kanan berkata "terangkan ACID kepada saya", mereka bukan menguji sama ada anda menghafal empat perkataan. Mereka mahu tahu sama ada anda memahami perkara yang dijamin oleh pangkalan data apabila ramai pengguna mengaksesnya serentak.
ACID ialah singkatan bagi Keatomikan, Ketekalan, Pengasingan dan Ketahanan. Setiap pangkalan data transaksi (PostgreSQL, MySQL/InnoDB, SQL Server, Oracle) menjanjikan empat sifat ini untuk kerja yang dibungkus dalam suatu transaksi.
Jawapan yang paling kukuh mengaitkan setiap huruf dengan kegagalan nyata yang dapat dicegahnya. Dalam babak seterusnya, kita akan melakukannya dengan tepat.
Apakah Transaksi?
Satu transaksi ialah unit kerja yang pangkalan data anggap sebagai satu langkah tunggal yang tidak boleh dibahagikan. Anda membukanya dengan BEGIN, melaksanakan satu atau lebih pernyataan, kemudian sama ada COMMIT untuk menjadikannya kekal atau ROLLBACK untuk membuang segala-galanya.
Contoh klasik ialah pemindahan wang bank: debit satu akaun, kredit akaun yang lain. Kedua-duanya mesti berlaku atau kedua-duanya tidak berlaku. Transaksi ialah pembungkus yang membolehkan anda membuat jaminan itu.
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;A = Keatomikan
Keatomikan bermaksud transaksi berlaku secara semua atau tiada. Jika mana-mana pernyataan gagal atau pelayan ranap di tengah jalan, setiap perubahan dalam transaksi itu dibatalkan seolah-olah transaksi tersebut tidak pernah bermula.
Dalam contoh pemindahan wang, jika pengkreditan gagal selepas pendebitan berjaya, keatomikan menjamin bahawa pendebitan itu juga dibatalkan. Anda tidak akan kehilangan wang akibat operasi yang separuh siap.
Ungkapan temu duga: "Keatomikan memastikan transaksi disahkan sebagai satu keseluruhan atau tidak disahkan langsung, tanpa meninggalkan keadaan separa."
Keatomikan dalam Tindakan
Di sini, kemas kini kedua melanggar kekangan semakan (baki tidak boleh menjadi negatif). Pangkalan data membatalkan transaksi itu, dan ROLLBACK turut membatalkan kemas kini pertama.
Perkara utama untuk temu duga: selepas pembatalan, akaun 1 masih mempunyai baki asalnya. Tiada penulisan separa yang tertinggal dalam jadual.
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 bermaksud transaksi memindahkan pangkalan data daripada satu keadaan yang sah kepada keadaan sah yang lain. Setiap transaksi yang disahkan mesti mematuhi semua peraturan yang ditakrifkan: kekangan, kunci asing, pencetus dan lata.
Jika transaksi akan menyebabkan kekangan dilanggar (rujukan kunci asing yatim, kunci utama pendua atau CHECK yang gagal), pangkalan data enggan mengesahkannya.
Nuansa yang perlu disebut: pangkalan data menguatkuasakan peraturan yang diisytiharkan, tetapi invarian peringkat aplikasi ("seorang pengguna boleh mempunyai paling banyak 3 sesi aktif") menjadi tanggungjawab anda melainkan dimodelkan sebagai kekangan.
Konsistensi Ditegakkan oleh Kekangan
Konsistensi sebahagian besarnya ialah hasil gabungan peraturan skema anda. Di bawah, kunci asing menjamin bahawa anda tidak boleh menyisipkan pesanan untuk pelanggan yang tidak wujud.
Jika penyisipan merujuk pelanggan yang tiada, transaksi gagal, keatomikan membatalkannya dan konsistensi terpelihara. Sebab itulah penemu duga mengatakan keatomikan dan konsistensi saling melengkapi.
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 = Pengasingan
Pengasingan bermaksud transaksi serentak tidak mengganggu satu sama lain. Secara idealnya, setiap transaksi berkelakuan seolah-olah berjalan sendirian walaupun berpuluh-puluh transaksi berjalan pada masa yang sama.
Dalam amalan, pangkalan data menawarkan tahap pengasingan yang berbeza, dengan menukar ketegasan untuk mendapatkan prestasi. Tahap yang lebih lemah membenarkan anomali tertentu (bacaan kotor dan bacaan hantu) sebagai pertukaran untuk keserentakan yang lebih tinggi.
Inilah bahagian paling terperinci dalam mana-mana temu duga ACID, jadi dua pelajaran seterusnya membincangkan tahap pengasingan dan anomali bacaan dengan mendalam.
Mengapa Pengasingan Merupakan Spektrum
Pengasingan sempurna (SERIALIZABLE) mahal kerana ia mesti menghalang setiap kemungkinan konflik penyusunan berselang-seli, biasanya melalui penguncian atau pembatalan transaksi.
Oleh itu, piawaian SQL mentakrifkan empat tahap. Perangkap temu duga yang biasa berlaku: calon menganggap pengasingan bersifat binari. Sebenarnya tidak. Anda perlu memilih secara jelas tahap yang dikehendaki.
READ UNCOMMITTEDpaling lemahREAD COMMITTEDREPEATABLE READSERIALIZABLEpaling kuat
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
-- ... business logic ...
COMMIT;D = Ketahanan
Ketahanan bermaksud sebaik sahaja transaksi disahkan, perubahannya kekal selepas ranap sistem, kehilangan kuasa dan mula semula. Transaksi yang disahkan berada dalam storan stabil.
Pangkalan data mencapai perkara ini dengan log tulis dahulu (WAL): perubahan ditulis ke log tahan lama sebelum fail data dikemas kini. Apabila dimulakan semula, enjin memainkan semula log untuk memulihkan kerja yang telah disahkan tetapi belum lagi ditulis ke fail utama.
Ungkapan temu duga: "Ketahanan dijamin oleh WAL; operasi pengesahan hanya selesai selepas rekod log ditulis sepenuhnya ke cakera."
Menggabungkan Pemindahan Wang Bank
Satu pemindahan wang menguji keempat-empat sifat serentak:
- Keatomikan: kedua-dua kemas kini diterapkan atau tiada satu pun diterapkan.
- Konsistensi: CHECK memastikan baki tidak menjadi negatif.
- Pengasingan: pembaca serentak tidak melihat pemindahan yang separuh siap.
- Ketahanan: selepas COMMIT, baki baharu kekal selepas ranap sistem.
Keupayaan memadankan satu contoh dengan keempat-empat huruf itulah yang memberikan mata dalam temu duga.
BEGIN;
UPDATE accounts SET balance = balance - 100
WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Soalan Susulan yang Biasa
Penemu duga sering menguji perkara yang lebih terperinci. Bersedialah untuk soalan berikut:
- "Apakah sifat yang dikuatkuasakan oleh kunci asing?" Konsistensi.
- "Apakah yang melindungi anda daripada pelayan yang ranap di tengah-tengah transaksi?" Keatomikan (pembatalan perkara yang belum disahkan) serta ketahanan (main semula perkara yang telah disahkan).
- "Adakah pengasingan percuma?" Tidak, pengasingan yang lebih kuat mengurangkan keserentakan.
- "Adakah stor NoSQL memberikan ACID?" Banyak stor menukarnya untuk mendapatkan ketersediaan (BASE); nyatakan bahawa perkara ini bergantung pada enjin.
Semakan Pantas
Uji pemahaman anda tentang fungsi setiap sifat ACID.
Ringkasan: ACID dalam Satu Nafas
Kini anda boleh menjawab soalan itu dengan jelas:
- Keatomikan - semua atau tiada; kerja separa dibatalkan.
- Konsistensi - setiap pengesahan mematuhi kekangan dan meninggalkan keadaan yang sah.
- Pengasingan - transaksi serentak tidak merosakkan satu sama lain; tahap ketegasan boleh dilaraskan.
- Ketahanan - data yang disahkan kekal selepas ranap sistem, disokong oleh log tulis dahulu.
Kaitkan setiap huruf dengan kegagalan nyata yang dihalangnya, dan anda akan melepasi bahagian awal mana-mana temu duga tentang keserentakan dengan mudah.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Sifat ACID Diterangkan” percuma?
Ya — teks penuh “Sifat ACID Diterangkan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga SQL, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Sifat ACID Diterangkan”?
Keatomikan, ketekalan, pengasingan dan ketahanan dengan contoh yang nyata. Anda berlatih Persediaan Temu Duga SQL menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga SQL?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga SQL di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Sifat ACID Diterangkan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga SQL ini?
Ya. Setiap pelajaran Persediaan Temu Duga SQL menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Sifat ACID Diterangkan
- Empat Tahap Pengasingan
- Bacaan Kotor, Tidak Boleh Diulang dan Hantu
- Kebuntuan, Penguncian dan MVCC