Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menyalin data dari tabel lain tanpa mengunci tabel di MYSQL 6.2?

Mengingat tabel memiliki kolom yang sama persis, Anda dapat melakukan sesuatu seperti ini:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
INSERT INTO NEW_TABLE (SELECT * FROM OLD_TABLE);
COMMIT ;

Saya telah menyertakan beberapa penjelasan tambahan berdasarkan Wistar komentar. Level membaca yang dapat digunakan di sini adalah:

  • BACA KOMITMEN :Tingkat isolasi yang agak mirip Oracle sehubungan dengan pembacaan yang konsisten (nonlocking):Setiap pembacaan yang konsisten, bahkan dalam transaksi yang sama, menetapkan dan membaca snapshot barunya sendiri
  • BACA TANPA KOMITMEN :Pernyataan SELECT dilakukan dengan cara yang tidak terkunci, tetapi versi baris yang mungkin lebih awal dapat digunakan. Jadi, dengan menggunakan tingkat isolasi ini, pembacaan seperti itu tidak konsisten. Ini juga disebut membaca kotor. Jika tidak, tingkat isolasi ini berfungsi seperti READ COMMITTED.
  • BACA BERULANG :Ini adalah tingkat isolasi default untuk InnoDB. Untuk pembacaan yang konsisten, ada perbedaan penting dari tingkat isolasi READ COMMITTED:Semua pembacaan yang konsisten dalam transaksi yang sama membaca snapshot yang dibuat oleh pembacaan pertama. Konvensi ini berarti bahwa jika Anda mengeluarkan beberapa pernyataan SELECT biasa (tidak terkunci) dalam transaksi yang sama, pernyataan SELECT ini juga konsisten satu sama lain.
  • DAPAT DISERIALISASI :Level ini seperti REPEATABLE READ, tetapi InnoDB secara implisit mengubah semua pernyataan SELECT biasa menjadi SELECT ... LOCK IN SHARE MODE jika autocommit dinonaktifkan. Jika autocommit diaktifkan, SELECT adalah transaksinya sendiri. Oleh karena itu diketahui hanya dapat dibaca dan dapat diserialisasi jika dilakukan sebagai pembacaan yang konsisten (nonlocking) dan tidak perlu diblokir untuk transaksi lain. (Untuk memaksa SELECT biasa untuk memblokir jika transaksi lain telah memodifikasi baris yang dipilih, nonaktifkan autocommit.)

Saya harap ini membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mencari angka pasti di php

  2. tambahkan kolom ke tabel mysql jika tidak ada

  3. CryptDB - tidak dapat terhubung ke proxy (ERROR 1105 (HY000):(proxy) semua backend mati)

  4. Bagaimana cara menambah bidang di MySql menggunakan ON DUPLICATE KEY UPDATE saat memasukkan beberapa baris?

  5. kompres teks sebelum disimpan di database mysql