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.