Dalam mysql, pemprosesan transaksi ialah mekanisme yang digunakan untuk mengurus operasi MySQL yang mesti dilakukan secara berkelompok bagi memastikan pangkalan data tidak mengandungi hasil operasi yang tidak lengkap boleh digunakan untuk mengekalkan integriti pangkalan data. Adalah dijamin bahawa kumpulan operasi MySQL tidak akan dihentikan pada pertengahan jalan, sama ada akan dilaksanakan sepenuhnya atau tidak dilaksanakan sama sekali.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Pemprosesan transaksi boleh digunakan untuk mengekalkan integriti pangkalan data bahawa kumpulan operasi MySQL sama ada dilaksanakan sepenuhnya atau tidak dilaksanakan sama sekali.
Contohnya, dalam sistem pengurusan kakitangan, pemadaman seseorang memerlukan pemadaman bukan sahaja maklumat asas orang itu, tetapi juga maklumat yang berkaitan dengan orang itu, seperti peti mel, artikel, dll. Dalam dengan cara ini, pangkalan data ini Pernyataan operasi membentuk transaksi!
Pemprosesan transaksi ialah mekanisme yang digunakan untuk mengurus operasi MySQL yang mesti dilakukan secara berkelompok bagi memastikan pangkalan data tidak mengandungi hasil operasi yang tidak lengkap. Menggunakan pemprosesan transaksi, anda boleh menjamin bahawa satu set operasi tidak akan dihentikan di tengah jalan, sama ada akan dilaksanakan secara keseluruhan atau tidak dilaksanakan sama sekali (melainkan diarahkan secara jelas) . Jika tiada ralat berlaku, keseluruhan set pernyataan dilakukan (ditulis) ke jadual pangkalan data. Jika ralat berlaku, gulung semula (buat asal) untuk memulihkan pangkalan data kepada keadaan yang diketahui dan selamat.
Secara umumnya, urus niaga mesti memenuhi 4 syarat (ACID):: Atomicity (A tomicity , atau tidak boleh dibahagikan), Ketekalan (Cketekalan), Pengasingan (Saya pengasingan, juga dikenali sebagai kemerdekaan), Kegigihan (Dkebolehtahanan).
Atomicity: Semua operasi dalam transaksi sama ada selesai sepenuhnya atau tidak selesai, dan tidak akan berakhir dengan beberapa pautan perantaraan. Jika ralat berlaku semasa pelaksanaan urus niaga, ia akan digulung semula ke keadaan sebelum urus niaga bermula, seolah-olah urus niaga itu tidak pernah dilaksanakan.
Ketekalan: Integriti pangkalan data tidak terjejas sebelum transaksi bermula dan selepas transaksi tamat. Ini bermakna bahawa data yang ditulis mesti mematuhi sepenuhnya semua peraturan pratetap, termasuk ketepatan dan penyatuan data, dan pangkalan data seterusnya boleh menyelesaikan kerja yang telah ditetapkan secara spontan.
Pengasingan: Pangkalan data membenarkan berbilang urus niaga serentak untuk membaca, menulis dan mengubah suai datanya pada masa yang sama Pengasingan boleh menghalang berbilang urus niaga daripada dilaksanakan secara serentak disebabkan oleh Pelaksanaan silang membawa kepada ketidakkonsistenan data. Pengasingan urus niaga dibahagikan kepada tahap yang berbeza, termasuk baca tanpa komitmen, baca komited, baca berulang dan boleh bersiri.
Kegigihan: Selepas transaksi selesai, pengubahsuaian data adalah kekal dan tidak akan hilang walaupun sistem gagal.
1.1 Kata Kunci
Apabila menggunakan transaksi dan pemprosesan transaksi, terdapat beberapa kata kunci yang muncul berulang kali. Berikut ialah beberapa istilah yang perlu anda ketahui tentang pemprosesan transaksi:
>, dan nyatakan dengan jelas bila data harus digulung semula dan bila ia sepatutnya tidak boleh ditarik balik.
1.2.1 MULAKAN TRANSAKSI Mulakan transaksi
MySQL menggunakan pernyataan berikut untuk mengenal pasti permulaan transaksiSTART TRANSACTION
Penyata am MySQL dilaksanakan dan ditulis terus pada jadual pangkalan data. Ini adalah apa yang dipanggil komit tersirat, iaitu, operasi komit (tulis atau simpan) dilakukan secara automatik .
Walau bagaimanapun, komit tidak berlaku secara tersirat dalam blok transaksi. Untuk membuat komitmen yang jelas, gunakan penyataan COMMIT COMMIT akan melakukan transaksi dan membuat semua pengubahsuaian pada pangkalan data kekal Seperti yang ditunjukkan di bawah:
START TRANSACTION DELETE FROM orderitems WHERE order_num = 20010; DELETE FROM orders WHERE order_num = 20010; COMMIT;
Dalam contoh ini, pesanan 20010 dipadamkan sepenuhnya daripada sistem. Kerana ia melibatkan pengemaskinian dua jadual pangkalan data, pesanan dan item pesanan, blok transaksi digunakan untuk memastikan pesanan tidak dipadamkan sebahagiannya. Pernyataan COMMIT akhir hanya menulis perubahan jika tiada ralat berlaku. Jika DELETE pertama berfungsi tetapi yang kedua gagal, DELETE tidak dilakukan (malah, ia dibatalkan secara automatik).
Perintah ROLLBACK MySQL digunakan untuk melancarkan (buat asal) pernyataan MySQL , Seperti berikut:
SELECT * FROM orderitems; START TRANSACTION -- 事务开始 DELETE FROM orderitems; SELECT * FROM orderitems; ROLLBACK; SELECT * FROM orderitems;
Contoh di atas bermula dengan memaparkan kandungan jadual jumlah pesanan. Mula-mula laksanakan SELECT untuk menunjukkan bahawa jadual tidak kosong. Kemudian mulakan urus niaga
dan padam semua baris dalam jumlah tertib dengan penyataan DELETE. Satu lagi pernyataan SELECT mengesahkan bahawa jumlah pesanan sememangnya kosong. Pada masa ini, gunakan pernyataan ROLLBACK untuk melancarkan semula semua pernyataan selepas MULAKAN URUS NIAGA dan pernyataan SELECT terakhir menunjukkan bahawa jadual tidak kosong.
Jelas sekali, ROLLBACK hanya boleh digunakan dalam urus niaga (selepas melaksanakan perintah MULA TRANSAKSI) .
Pemprosesan transaksi digunakan untuk mengurus INSERT, UPDATE dan DELETE penyata. Anda tidak boleh memutar balik pernyataan SELECT. (Ini juga tidak masuk akal.) Anda tidak boleh melancarkan operasi CREATE atau DROP. Kedua-dua penyata ini boleh digunakan dalam blok transaksi, tetapi ia tidak akan dibuat asal jika anda melakukan pemulangan semula.
Penyata ROLLBACK dan COMMIT yang mudah boleh menulis atau membuat asal keseluruhan transaksi . Walau bagaimanapun, ini hanya boleh dilakukan untuk transaksi mudah;
Untuk menyokong sebahagian daripada transaksi, pemegang tempat mesti diletakkan di lokasi yang sesuai dalam blok transaksi. Dengan cara ini, jika anda perlu berpatah balik, anda boleh kembali kepada pemegang tempat. Pemegang tempat ini dipanggil titik pengekalan . Untuk mencipta ruang letak, gunakan penyataan SAVEPOINT berikut:
SAVEPOINT delete1;
Setiap titik simpan mempunyai nama unik yang mengenal pastinya supaya ia boleh digunakan semasa rollback , MySQL tahu ke mana hendak berundur. Operasi berikut boleh kembali ke titik pengekalan yang diberikan:
ROLLBACK TO delete1;
Seperti yang dinyatakan , tingkah laku MySQL lalai adalah untuk melakukan semua perubahan secara automatik. Dalam erti kata lain, pada bila-bila masa anda melaksanakan penyata MySQL, penyataan itu sebenarnya dilaksanakan terhadap jadual, dan perubahan itu berkuat kuasa serta-merta. Untuk mengarahkan MySQL supaya tidak melakukan perubahan secara automatik, anda perlu menggunakan pernyataan berikut:
SET autocommit = 0;
Bendera autocommit menentukan sama ada untuk melakukan perubahan secara automatik , tanpa mengira sama ada terdapat pernyataan COMMIT . Menetapkan autocommit kepada 0 (palsu) mengarahkan MySQL untuk tidak melakukan perubahan secara automatik (sehingga autocommit ditetapkan kepada benar).
bendera untuk sambungan Bendera autokomit peribadi adalah untuk setiap sambungan dan bukan untuk pelayan.
1.3 Kaedah pemprosesan transaksi
🎜>Gunakan BEGIN, ROLLBACK, COMMIT untuk melaksanakan
2) KEMBALIKAN urus niaga Rollback
3) KOMIT Transaksi pengesahan
Contoh:
SET AUTOCOMMIT=0 Lumpuhkan autokomit
TETAPKAN AUTOCOMMIT=1 Hidupkan penyerahan automatik
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Apakah pemprosesan transaksi dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!