pada tahap Baca tanpa komitmen , pengubahsuaian dalam urus niaga boleh dilihat oleh urus niaga lain walaupun ia tidak dilakukan. Transaksi boleh membaca data tidak terikat, yang juga dipanggil bacaan kotor. Tahap ini boleh menyebabkan banyak masalah dari segi prestasi, Baca tanpa komitmen tidak jauh lebih baik daripada tahap lain, tetapi ia tidak mempunyai banyak faedah tahap lain Melainkan terdapat sebab yang sangat diperlukan, ia jarang digunakan dalam aplikasi sebenar.
Tahap pengasingan lalai kebanyakan sistem pangkalan data ialah Baca komited (tetapi bukan MySQL). Baca komited memenuhi definisi mudah pengasingan yang dinyatakan sebelum ini: apabila transaksi bermula, hanya pengubahsuaian yang dibuat oleh transaksi komited boleh dilihat. Dalam erti kata lain, sebarang pengubahsuaian yang dibuat oleh transaksi dari awal hingga masa ia dilakukan tidak dapat dilihat oleh transaksi lain. Tahap ini kadangkala dipanggil bacaan tidak boleh berulang, kerana melaksanakan pertanyaan yang sama dua kali boleh menghasilkan hasil yang berbeza.
Bacaan berulang menyelesaikan masalah bacaan kotor. Tahap ini memastikan bahawa hasil pembacaan rekod yang sama beberapa kali dalam transaksi yang sama adalah konsisten. Walau bagaimanapun, secara teori, tahap pengasingan bacaan berulang masih tidak dapat menyelesaikan masalah bacaan hantu (baca hantu) yang lain. Bacaan hantu yang dipanggil bermakna apabila transaksi membaca rekod dalam julat tertentu, transaksi lain memasukkan rekod baharu dalam julat Apabila transaksi sebelumnya membaca rekod dalam julat itu semula, ia akan Menghasilkan baris hantu. Enjin storan InnoDB dan XtraDB menyelesaikan masalah bacaan hantu melalui kawalan konkurensi berbilang versi (MVCC).
Bacaan berulang ialah tahap pengasingan transaksi lalai Mysql InnoDB terutamanya memperoleh konkurensi tinggi dengan menggunakan MVVC dan menggunakan strategi yang dipanggil penguncian seterusnya untuk mengelakkan bacaan hantu.
Boleh Bersiri ialah tahap pengasingan tertinggi. Ia mengelakkan masalah bacaan hantu yang dinyatakan sebelum ini dengan memaksa transaksi untuk bersiri. Ringkasnya, Serializable akan menambah kunci pada setiap baris data yang dibaca, jadi ia boleh menyebabkan banyak masa tamat dan masalah pemerolehan kunci. Tahap pengasingan ini jarang digunakan dalam aplikasi sebenar Tahap ini harus dipertimbangkan hanya apabila sangat diperlukan untuk memastikan konsistensi data dan ketiadaan konkurensi boleh diterima.
ANSI SQL92 P68-69
Level (隔离级别) | Dirty read (脏读) | Non-repeatable read (不可重复读) | Phantom (幻读) |
---|---|---|---|
Read uncommitted (读取未提交内容) | ✓ | ✓ | ✓ |
Read committed (读取提交内容) | × | ✓ | ✓ |
Repeatable read (可重复读) | × | × | ✓ |
Serializable (可串行化) | × | × | × |
Pembelajaran yang disyorkan: "tutorial video mysql 》
Atas ialah kandungan terperinci Ringkaskan empat tahap pengasingan standard SQL92. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!