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

cái này có khóa cơ sở dữ liệu không?

Đối với tôi, tài liệu hơi không rõ ràng:

Phương pháp khóa nội bộ gợi ý rằng, trong một số trường hợp, có thể chèn vào bảng MyISAM trong khi một phiên khác đang đọc từ đó:

Tuy nhiên, Sự cố về khóa bảng hiển thị tình huống mà bảng sẽ bị khóa cho đến khi CHỌN hoàn tất (điều này phù hợp với tình huống của bạn):

Bảng InnoDB triển khai khóa cấp độ hàng, vì vậy chỉ hàng đang được đọc sẽ bị khóa, thay vì toàn bộ bảng.

Thay vì chỉ dựa vào tài liệu, tôi đã thử một thử nghiệm nhỏ:

  1. Tạo hai bảng có cùng cấu trúc:table_atable_b .
  2. Điền vào table_a với 500.000 hàng.
  3. Sao chép dữ liệu từ table_a tới table_b sử dụng INSERT INTO ... SELECT tuyên bố.
  4. Trong quá trình sao chép, hãy sử dụng một phiên khác để chèn một hàng mới vào table_a .
  5. Kiểm tra xem table_b chứa bản ghi mới.

Khi cả hai bảng trong đó MyISAM, table_b không chứa bản ghi mới sau bản sao. Khi cả hai bảng trong đó InnoDB, table_b đã chứa bản ghi mới sau bản sao. Tôi đã lặp lại điều này ba lần và như mong đợi, kết quả mỗi lần đều giống nhau.

Vì vậy, trong ngắn hạn, nếu bảng của bạn là MyISAM, nó sẽ bị khóa. Nếu đó là InnoDB, nó sẽ không. Tất nhiên, bài kiểm tra này không xem xét các bản cập nhật, nhưng tôi hy vọng kết quả sẽ tương tự.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql 5.7.20:Không thể tạo giá trị JSON từ một chuỗi có BỘ CHARACTER 'nhị phân'

  2. Cách giám sát việc triển khai MySQL với Prometheus &Grafana tại ScaleGrid

  3. myisam đặt khóa bảng trên bàn ngay cả khi xử lý truy vấn 'chọn'?

  4. Đặt dữ liệu nhị phân bằng setblob trong trình kết nối mysql / c ++ gây ra lỗi

  5. Làm thế nào để sử dụng MySQL DECIMAL?