Berlaku secara kekal menjimatkan perubahan yang dibuat semasa urus niaga, sementara rollback membatalkannya. Transaksi adalah urutan operasi SQL yang dianggap sebagai satu unit untuk memastikan integriti data, mengikuti sifat asid. Sebagai contoh, dalam pemindahan wang, jika satu akaun didebitkan tetapi yang lain tidak dikreditkan, urus niaga memastikan tiada kemas kini separa berlaku. Apabila semua operasi berjaya, komit membuat perubahan kekal dan dapat dilihat oleh orang lain; Setelah melakukan, perubahan tidak dapat dibatalkan tanpa pembalikan. Sekiranya ralat berlaku atau perubahan tidak boleh berterusan, rollback membalikkan segala -galanya ke negeri sebelum urus niaga bermula. Senario rollback biasa termasuk pelanggaran kekangan, kesilapan permohonan, ujian, atau pemotongan yang tidak dijangka. Untuk menggunakan komit dan rollback dengan berkesan: 1) membungkus operasi berkaitan dalam urus niaga; 2) menguji dengan teliti dalam pembangunan; 3) mengelakkan urus niaga jangka panjang untuk mengelakkan penguncian sumber; 4) Memahami tetapan auto-commit; dan 5) Gunakan SavePoints untuk rollback separa apabila disokong. Penggunaan arahan yang betul ini memastikan pengendalian data yang boleh dipercayai dalam aplikasi pangkalan data.
Apabila anda bekerja dengan pangkalan data, terutamanya dalam aplikasi yang memerlukan pengendalian data yang boleh dipercayai, komit dan pengembalian adalah dua arahan penting yang membantu menguruskan urus niaga. Mereka menentukan sama ada perubahan yang dibuat semasa transaksi perlu disimpan atau dibuang.
Secara ringkas:
- Komit menyelamatkan perubahan secara kekal ke pangkalan data.
- Rollback membatalkan perubahan yang dibuat semasa urus niaga semasa.
Apakah urus niaga?
Sebelum menyelam ke dalam komitmen dan pengembalian, ia membantu memahami apa urus niaga . Transaksi adalah urutan satu atau lebih operasi SQL yang dianggap sebagai satu unit kerja. Sama ada semuanya berjaya, atau tidak ada - ini adalah sebahagian daripada sifat asid (atom, konsistensi, pengasingan, ketahanan) yang mengikuti pangkalan data.
Sebagai contoh, bayangkan memindahkan wang dari satu akaun bank ke yang lain:
- Memotong wang dari akaun a
- Tambahkan wang ke akaun b
Sekiranya ada masalah selepas langkah 1 tetapi sebelum langkah 2, anda tidak mahu potongan itu melekat. Di situlah transaksi berguna.
Bagaimana komit berfungsi?
Sebaik sahaja anda telah melaksanakan pernyataan SQL anda di dalam blok transaksi dan semuanya kelihatan baik, anda menggunakan komit untuk membuat perubahan tersebut kekal.
Berikut adalah contoh asas menggunakan SQL:
Mulakan urus niaga; Kemas kini Akaun Tetapkan Baki = Baki - 100 di mana account_id = 1; Kemas kini Akaun Tetapkan Baki = Baki 100 di mana account_id = 2; Komit;
Selepas COMMIT
berjalan, kedua -dua kemas kini dapat dilihat oleh pengguna lain dan disimpan secara kekal dalam pangkalan data.
Mata Utama:
- Sebaik sahaja dilakukan, perubahan tidak dapat dibatalkan kecuali secara eksplisit diterbalikkan.
- Sesi lain kini akan melihat data yang dikemas kini.
- Sesetengah pangkalan data auto secara lalai, yang bermaksud setiap pernyataan dianggap sebagai urus niaga sendiri melainkan jika diberitahu sebaliknya.
Bila Menggunakan Rollback
Jika pada bila -bila masa semasa urus niaga berlaku, anda memutuskan untuk tidak meneruskan, Rollback membolehkan anda membatalkan segala -galanya sejak permulaan urus niaga.
Contoh:
Mulakan urus niaga; Kemas kini Akaun Tetapkan Baki = Baki - 100 di mana account_id = 1; - Alamak! Ada yang tidak kena Rollback;
Sekarang, tiada perubahan yang digunakan - akaun A masih mempunyai baki asalnya.
Senario biasa untuk penggantian:
- Mengesan pelanggaran kekangan (misalnya, keseimbangan negatif)
- Mengendalikan kesilapan peringkat permohonan
- Ujian tanpa menjejaskan data sebenar
Rollbacks juga automatik jika sesi memutuskan sambungan tanpa disangka -sangka atau kemalangan sistem berlaku sebelum melakukan.
Petua untuk menggunakan komit dan rollback dengan berkesan
- Sentiasa bungkus operasi berkaitan dalam transaksi apabila integriti data penting.
- Ujian logik dengan teliti dalam persekitaran pembangunan sebelum menjalankan urus niaga pada data pengeluaran.
- Elakkan memegang urus niaga terlalu lama - mereka boleh mengunci sumber dan prestasi impak.
- Berhati-hati dengan tingkah laku auto-komite pangkalan data anda (biasanya anda boleh togolnya).
- Gunakan SavePoints (
SAVEPOINT
) jika DB anda menyokong mereka - mereka membiarkan anda melancarkan bahagian transaksi.
Jadi, untuk merakam:
Anda menggunakan komit apabila anda pasti perubahan itu perlu berlaku, dan pengembalian semula apabila ada yang salah atau anda belum bersedia untuk menggunakan perubahan tersebut.
Mereka tidak rumit, tetapi memahami bagaimana dan bila menggunakannya membuat perbezaan besar dalam membina aplikasi pangkalan data yang mantap.
Atas ialah kandungan terperinci Bagaimana komit dan rollback berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

1. Sumber masalah Apabila menganalisis masalah prestasi, pertanyaan perlahan dan transaksi perlahan binlog adalah kaedah yang biasa digunakan. Baru-baru ini, saya sedang menganalisis pertanyaan yang perlahan dan mendapati bahawa ia mengandungi sejumlah besar pernyataan komit yang perlahan, tetapi pemadanan tidak dapat diselesaikan apabila menganalisis urus niaga perlahan binlog. Sebagai contoh, mungkin terdapat 1,000 penyata komit dalam tempoh ini, tetapi mungkin terdapat hanya 100 urus niaga yang perlahan Ini terlalu berbeza. Jadi mengapa fenomena ini berlaku? 2. Kaedah penentuan masing-masing untuk urus niaga perlahan biasanya seperti berikut untuk transaksi (masukkan) secara eksplisit: GTID_LOG_EVENT dan XID_EVENT ialah masa apabila arahan 'COMMIT' dimulakan.

Cara untuk membatalkan komit yang diserahkan oleh git: 1. Ubah suai kandungan komit terakhir Jika anda mendapati terdapat ralat dalam komit terakhir, anda boleh menggunakan perintah "git commit --amend" untuk mengubah suainya. Buat asal perubahan komit, Jika anda perlu membatalkan sepenuhnya komit dan perubahan yang sepadan, anda boleh menggunakan arahan "git revert" 3. Jika anda perlu kembali sepenuhnya ke keadaan sebelum komit, anda boleh menggunakan arahan "git reset".

Apabila anda menghadapi masalah tidak dapat memanggil komit dalam projek PHP, ia mungkin disebabkan oleh ralat dalam kod, kebenaran tidak mencukupi atau isu konfigurasi alat kawalan versi. Apabila menghadapi masalah sedemikian, anda boleh menyemak dan menyelesaikannya secara beransur-ansur melalui kaedah berikut: 1. Semak ralat kod Pertama, anda perlu menyemak sama ada terdapat ralat tatabahasa, ralat logik atau ralat lain yang berkaitan dengan kod yang dikemukakan dalam kod. Contohnya, apabila menggunakan Git sebagai alat kawalan versi, penyerahan mungkin tidak dapat dilakukan kerana konflik fail, fail tidak berperingkat, dsb. Oleh itu, anda boleh menyemak

Bagaimana untuk menyelesaikan masalah tidak dapat memanggil komit dalam projek PHP Dalam proses membangunkan projek PHP, kami sering menghadapi situasi di mana kami perlu memanggil perkhidmatan luaran atau API dan melaksanakan operasi yang sepadan berdasarkan hasil yang dikembalikan. Walau bagaimanapun, kadangkala kami menghadapi masalah semasa memanggil operasi komit dan tidak dapat melaksanakannya seperti biasa. Artikel ini akan memperkenalkan secara terperinci cara menyelesaikan masalah tidak dapat memanggil komit dalam projek PHP dan menyediakan contoh kod khusus untuk membantu pembangun menyelesaikan masalah ini dengan cepat. Analisis masalah: Dalam projek PHP, apabila perkhidmatan luaran perlu dipanggil

Commitparlysanlysaveschangesmadeduringatransaction, wilerollbackundoesthem.atransactionisasequenceofsqloperationstreatedasasingleunittoensureSureTaTaThity, ackreritproperties.forexample, inamoneytransfer, ifoneaccountheBiteTheBiteTheRoTheRoTheBerTheBiteTheRoTheRoTheRoTheRoTheRoTheRoTheBerTheButeTheButeTheBeTheBerTheButeBoTheBerTheBiteTheBerTheBiteTheBerTheBiteTheBerTheBiteTheBerTheBiteTheBerTheBiteTheBerTheBit

Untuk membatalkan komit yang telah ditolak ke repositori tetapi menyimpan sejarah, gunakan Gitrevert untuk mewujudkan komit baru untuk membalikkan perubahan kepada komit yang ditentukan. 1. Gunakan gitlog-eleline untuk mencari nilai hash sasaran komit; 2. Melaksanakan Gitrevert atau seperti Gitreverthead ~ 2 untuk membatalkan komit tertentu; 3. Jika terdapat konflik, menyelesaikannya secara manual dan teruskan dengan Gitrevert-berterusan, atau membatalkan; 4. Maklumat penyerahan boleh diedit dan disahkan; 5. Bagi komitmen yang digabungkan, parameter -M1 perlu ditambah. Kaedah ini selamat untuk cawangan bersama dan mengelakkan masalah yang disebabkan oleh penulisan semula sejarah.

ToamendthemoStrecentCommitMessage, usegitCommit-amend-m "yournewcommitmessage" ifthecommithas'tbeenpush;

Gunakan Gitlog-OLELINE untuk mendapatkan hash sasaran sasaran; 2. Jalankan Gitswitch-C untuk membuat dan beralih terus dari komit ke cawangan baru, tanpa menukar cawangan semasa terlebih dahulu-kaedah ini dengan tepat mencipta cawangan berdasarkan komit yang ditentukan, sesuai untuk menetapkan bug versi lama atau eksperimen berasaskan titik yang stabil, tanpa menjejaskan cawangan asal, dan berakhir sepenuhnya.
