Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để sao chép dữ liệu từ một bảng khác mà không khóa bảng trong MYSQL 6.2?

Để các bảng có cùng các cột chính xác, bạn có thể làm như sau:

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

Tôi đã bao gồm một số giải thích bổ sung dựa trên Wistar's bình luận. Các cấp độ đọc có thể được sử dụng ở đây là:

  • ĐỌC ĐƯỢC CAM KẾT :Một mức độ cô lập hơi giống Oracle đối với các lần đọc nhất quán (không khóa):Mỗi lần đọc nhất quán, ngay cả trong cùng một giao dịch, đặt và đọc ảnh chụp nhanh mới của chính nó
  • ĐỌC KHÔNG ĐƯỢC ĐỀ XUẤT :Các câu lệnh SELECT được thực hiện theo kiểu không khóa, nhưng có thể sử dụng phiên bản cũ hơn của hàng. Do đó, sử dụng mức cô lập này, các lần đọc như vậy không nhất quán. Đây cũng được gọi là đọc bẩn. Nếu không, mức cô lập này hoạt động giống như READ COMMITTED.
  • ĐỌC CÓ THỂ LẶP LẠI :Đây là mức cách ly mặc định cho InnoDB. Đối với các lần đọc nhất quán, có một sự khác biệt quan trọng so với mức cách ly READ COMMITTED:Tất cả các lần đọc nhất quán trong cùng một giao dịch đều đọc ảnh chụp nhanh được thiết lập bởi lần đọc đầu tiên. Quy ước này có nghĩa là nếu bạn phát hành một số câu lệnh SELECT thuần túy (không khóa) trong cùng một giao dịch, thì các câu lệnh SELECT này cũng nhất quán với nhau.
  • CÓ THỂ XỬ LÝ :Mức độ này giống như REPEATABLE READ, nhưng InnoDB chuyển đổi ngầm tất cả các câu lệnh SELECT thuần túy thành SELECT ... LOCK IN SHARE MODE nếu tính năng tự động gửi bị tắt. Nếu tính năng tự động gửi được bật, SELECT là giao dịch của chính nó. Do đó, nó được biết là chỉ đọc và có thể được tuần tự hóa nếu được thực hiện như một lần đọc nhất quán (không khóa) và không cần chặn đối với các giao dịch khác. (Để buộc một SELECT thuần túy chặn nếu các giao dịch khác đã sửa đổi các hàng đã chọn, hãy tắt tự động gửi.)

Tôi hy vọng điều này sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể cài đặt mysql-connector-python trong virtualenv

  2. mysql NOT IN QUERY tối ưu hóa

  3. Tại sao các thủ tục được lưu trữ vẫn không được hỗ trợ trong Rails (3+)?

  4. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 9.10 (Karmic)

  5. Cách thay thế mẫu regex trong MySQL