Tujuan utama pilih ... untuk kemas kini adalah untuk mengunci baris yang dipilih semasa urus niaga untuk mengelakkan sesi lain daripada mengubahnya sehingga urus niaga selesai yang memastikan konsistensi data dalam persekitaran serentak seperti perbankan dan sistem inventori 1 Ia meletakkan kunci peringkat baris yang membolehkan orang lain membaca tetapi tidak mengemas kini atau memadam Pemindahan dan mengelakkan kelebihan 4 kunci harus digunakan dengan teliti dengan memastikan urus niaga pendek melakukan segera dan memperoleh kunci dalam urutan yang konsisten untuk mengelakkan masalah prestasi dan kebuntuan.
Apabila anda melihat SELECT ... FOR UPDATE
, ia melakukan sesuatu yang lebih serius daripada SELECT
biasa. Tujuan utamanya? Untuk mengunci baris yang dipilih supaya tidak ada orang lain yang dapat mengubahnya sehingga urus niaga anda selesai.
Ini amat penting dalam sistem di mana beberapa pengguna atau proses mungkin cuba mengakses atau menukar data yang sama pada masa yang sama - seperti ketika mengendalikan inventori, urus niaga perbankan, atau kerusi tempahan.
Menghalang sesi lain daripada mengubahsuai baris
Perkara terbesar SELECT ... FOR UPDATE
tidak meletakkan kunci peringkat baris pada data yang anda cari. Itu bermaksud:
- Urus niaga lain masih boleh membaca data (bergantung pada tahap pengasingan anda).
- Tetapi mereka tidak boleh
UPDATE
atauDELETE
baris tersebut sehingga transaksi anda sama ada melakukan atau menggulung kembali.
Sebagai contoh, bayangkan dua orang cuba menempah kerusi terakhir dalam penerbangan pada masa yang sama. Tanpa mengunci, kedua -duanya boleh menyemak ketersediaan dan fikir ia tersedia. Dengan SELECT ... FOR UPDATE
, sesi pertama mengunci baris tempat duduk, jadi yang kedua perlu menunggu dan akan melihat status yang dikemas kini (sudah ditempah).
Berfungsi dalam urus niaga
Anda perlu berada di dalam transaksi untuk ini berfungsi dengan baik. Ini bermakna bermula dengan BEGIN
atau berada dalam mod AutoCommit = OFF. Jika anda menjalankan SELECT ... FOR UPDATE
di luar blok transaksi, kunci biasanya akan dikeluarkan sebaik sahaja pertanyaan selesai.
Jadi jika anda menggunakan ini dalam aplikasi, pastikan pemacu pangkalan data anda tidak menjalankan setiap pertanyaan dalam urus niaga auto sendiri.
Kes penggunaan biasa
Berikut adalah beberapa kes dunia sebenar di mana SELECT ... FOR UPDATE
berguna:
- Sistem Perbankan : Apabila menolak wang dari satu akaun dan menambahkannya kepada yang lain, anda ingin memastikan baki tidak berubah pertengahan.
- Pengurusan Inventori : Mencegah overselling dengan mengunci tahap stok produk semasa memproses pesanan.
- Pemprosesan Beratur : Pelbagai pekerja yang menarik tugas dari barisan tidak boleh memilih tugas yang sama.
Katakan anda mempunyai jadual yang dipanggil orders
dan anda mahu memproses hanya pesanan yang tidak diproses. Anda mungkin melakukan sesuatu seperti:
Bermula; Pilih * dari pesanan di mana diproses = pesanan palsu dengan had id 1 untuk kemas kini; - Sekarang kemas kini baris itu untuk menandakannya sebagai diproses Pesanan kemas kini ditetapkan diproses = benar di mana id = 123; Komit;
Ini memastikan bahawa walaupun dua pekerja menjalankan pertanyaan pada masa yang sama, hanya satu daripada mereka yang akan memproses pesanan.
Mengunci tidak percuma - gunakan dengan teliti
Mengunci baris boleh menyebabkan masalah prestasi atau bahkan kebuntuan jika tidak ditangani dengan betul. Berikut adalah beberapa perkara yang perlu diingat:
- Pastikan urus niaga pendek. Semakin lama anda memegang kunci, semakin anda menyekat orang lain.
- Sentiasa komited atau rollback sebaik sahaja anda selesai - jangan biarkan urus niaga terbuka tergantung.
- Berhati -hati dengan mengunci beberapa jadual atau baris dalam pesanan yang berbeza di seluruh sesi - itulah resipi untuk kebuntuan.
Di PostgreSQL, misalnya, anda akan sering melihat kesilapan kebuntuan apabila dua sesi sedang menunggu kunci masing -masing. Jadi sentiasa merancang pertanyaan anda untuk memperoleh kunci dalam urutan yang konsisten.
Itulah pada dasarnya apa SELECT ... FOR UPDATE
adalah untuk - mengunci baris semasa urus niaga untuk mengelakkan konflik. Tidak terlalu rumit, tetapi sangat kuat apabila digunakan dengan betul.
Atas ialah kandungan terperinci Apakah tujuan memilih ... untuk kemas kini?. 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)

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Data JSON boleh disimpan ke dalam pangkalan data MySQL dengan menggunakan perpustakaan gjson atau fungsi json.Unmarshal. Pustaka gjson menyediakan kaedah kemudahan untuk menghuraikan medan JSON dan fungsi json.Unmarshal memerlukan penuding jenis sasaran kepada data JSON unmarshal. Kedua-dua kaedah memerlukan penyediaan pernyataan SQL dan melaksanakan operasi sisipan untuk mengekalkan data ke dalam pangkalan data.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Oracle bukan sahaja syarikat pangkalan data, tetapi juga pemimpin dalam pengkomputeran awan dan sistem ERP. 1. Oracle menyediakan penyelesaian yang komprehensif dari pangkalan data ke perkhidmatan awan dan sistem ERP. 2. Oraclecloud mencabar AWS dan Azure, menyediakan perkhidmatan IaaS, PaaS dan SaaS. 3. Sistem ERP Oracle seperti E-BusinessSuite dan FusionApplications membantu perusahaan mengoptimumkan operasi.

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

MySQL sesuai untuk aplikasi web dan sistem pengurusan kandungan dan popular untuk sumber terbuka, prestasi tinggi dan kemudahan penggunaan. 1) Berbanding dengan PostgreSQL, MySQL melakukan lebih baik dalam pertanyaan mudah dan operasi membaca serentak yang tinggi. 2) Berbanding dengan Oracle, MySQL lebih popular di kalangan perusahaan kecil dan sederhana kerana sumber terbuka dan kos rendah. 3) Berbanding dengan Microsoft SQL Server, MySQL lebih sesuai untuk aplikasi silang platform. 4) Tidak seperti MongoDB, MySQL lebih sesuai untuk data berstruktur dan pemprosesan transaksi.
