Hướng dẫn check lock table mysql - kiểm tra bảng khóa mysql
Chào các bạn, hôm nay mình sẽ giới thiệu với các bạn về Table Locking trong MySQL. Trong bài viết này tôi sẽ giúp các bạn hiểu về Table Locking, cách sử dụng Table Locking trong MySQL, nào chúng ta cùng bắt đầu nhé.Table Locking trong MySQL. Trong bài viết này tôi sẽ giúp các bạn hiểu về Table Locking, cách sử dụng Table Locking trong MySQL, nào chúng ta cùng bắt đầu nhé. Show Table Locking là gì?Lock là một flag được liên kết với một table, MySQL cho phép một client session có thể nhận được một table lock một cách rõ ràng nhằm mục đích ngăn không cho các session khác truy cập thao tác dữ liệu vào cùng một bảng trong 1 thời gian cụ thể. là một flag được liên kết với một table, MySQL cho phép một client session có thể nhận được một table lock một cách rõ ràng nhằm mục đích ngăn không cho các session khác truy cập thao tác dữ liệu vào cùng một bảng trong 1 thời gian cụ thể. Một client session chỉ có thể lấy hoặc giải phóng các table lock cho chính nó. Tương tự thì một client session không thể giải phóng table lock cho các client session khác. Để hiểu hơn về phần khái niệm ở trên chúng ta sẽ đi làm một vài ví dụ nhé. Đầu tiên tôi sẽ tạo một bảng có lên là 2 để thực hành với các câu lệnh table lock.
Câu lệnh LOCK TABLESDưới đây là câu lệnh để thực hiện khóa một bảng :
Trong cú pháp này, ta chỉ định tên của bảng muốn khóa sau từ khóa 3. Ngoài ra, chúng ta còn có thể chỉ định loại khóa là 4 hoặc 5MySQL cho phép ta khóa nhiều bảng bằng cách chỉ định danh sách các bảng được phân tách bằng dấu phẩy với cú pháp như sau:
UNLOCK TABLESCâu lệnh MySQLĐể mở khóa cho một bảng, bạn sử dụng câu lệnh sau:
READ LocksREAD Lock có các tính năng sau: có các tính năng sau:
Chúng ta cùng xem cách hoạt động của 6 trong trường hợp sau:Trong session đầu tiên: Trước tiên hãy kết nối với cơ sở dữ liệu và sử dụng hàm CONNECTION_ID() để lấy id kết nối hiện tại như sau:
Hàm này sẽ trả về id kết nối của session hiện tại của bạn.
Sau đó, hãy thêm bản ghi vào bảng 2.
Thực hiện truy vấn dữ liệu với bảng 2
Bây giờ, hãy thử khóa bảng bằng cách sử dụng câu lệnh 3
Tiếp theo hãy thêm một bản ghi vào bảng 2
MySQL đã phát hành lỗi sau
Vì vậy, một khi sử dụng 5 chúng ta sẽ không thể ghi thêm dữ liệu vào bảng kể cả là trong cùng 1 session.
Hãy thử kiểm tra 5 từ một session khác.Đầu tiên hãy tạo một session khác kết nối với databases của bạn và kiểm tra id kết nối:
Tiếp theo, truy vấn dữ liệu từ bảng 2:
Sau đó, hãy thêm bản ghi vào bảng 2: 2Đây là đầu ra:
Thao tác thêm bản ghi từ session có 9 đang ở trạng thái chờ vì hiện tại session đầu tiên đang thực hiện 5 trên bảng 2 và nó vẫn chưa được giải phóng.Bây giờ hãy chuyển sang session đầu tiên và thực hiện câu lệnh 2 3
Các bạn có thể thấy thông tin chi tiết về thao tác thêm bản ghi ở session đang ở trong hàng chờ. Như đã nói phía trên muốn thao tác này được thực hiện bạn cần phải giải phóng session đầu tiên bằng cách sử dụng lệnh 3. Sau khi chúng ta giải phong 6 của session đầu tiên, câu lệnh 5 hoạt động từ phiên thứ sẽ được thực thi.Bây giờ các bạn có thể kiểm tra dữ liệu của bảng 2 để xem câu lệnh 5 từ session thứ hai có thực sự đã được thực thi.
Write LocksWRITE lock có các tính năng sau: có các tính năng sau:
Hãy cùng làm một vài ví dụ để xem cách thức hoạt động của 8.Đầu tiên hãy thực hiện câu lệnh 8 ở session đầu tiên. 5Sau đó, hãy thêm một bản ghi vào bảng 2 6Kiểm tra dữ liệu trong bảng 2.
Như vậy sau khi thực hiện khóa bảng với từ khóa 8 thì ta vẫn có thể thao tác với dữ liệu trên bảng này từ session đã locking bảng.Bây giờ hãy thử đọc và ghi dữ liệu từ session thứ hai. 8Lúc này MySQL đặt các hoạt động này vào trạng thái chờ. Bạn có thể kiểm tra nó bằng cách sử dụng lệnh 2 ở session đầu tiên. 3
Muốn các lệnh trên được thực hiện các bạn cần giải phóng khóa ở session đầu tiên.
Để kiểm tra xem các lệnh chở ở session thứ hai có được thực hiện thật không hãy truy vấn lại dữ liệu ở bảng 2.
Vậy là câu lệnh insert ở session đã được thực hiện. Kết luậnNhư vậy trong bài viết này mình đã giới thiệu đến các bạn về khái niệm Table Locking trong MySQL, và cách đống mở khóa với hai loại khóa READ lock và WRITE lock khi thao tác giữa các session khác nhau. Hi vọng thông qua bài viết này các bạn sẽ hiểu hơn về Table Locking để có thể áp dụng để giải quyết các bài toàn trong công việc. Cảm ơn vì đã đọc!Table Locking trong MySQL, và cách đống mở khóa với hai loại khóa READ lock và WRITE lock khi thao tác giữa các session khác nhau. Hi vọng thông qua bài viết này các bạn sẽ hiểu hơn về Table Locking để có thể áp dụng để giải quyết các bài toàn trong công việc. Cảm ơn vì đã đọc! Nguồn tham khảo
|