Trang chủ » Deadlock: Cách Phát Hiện và Phòng Tránh Deadlock Hiệu Quả
Deadlock: Cách Phát Hiện và Phòng Tránh Deadlock Hiệu Quả
- 05/01/2023
- LANIT JSC
Deadlock là gì? Deadlock ảnh hưởng như thế nào đến quá trình quản trị cơ sở dữ liệu database của bạn? Mời các bạn cùng LANIT tìm hiểu về khái niệm, cách phát hiện và phòng tránh Deadlock trong bài viết dưới đây nhé!
1. Deadlock là gì?
Deadlock là sự xung đột giữa các câu lệnh trong cùng thời điểm đọc hay ghi dữ liệu. Nó làm thay đổi tính nhất quán trong các tài nguyên của database khiến cho các lệnh còn lại không có tài nguyên để sử dụng. Sự xáo trộn này khiến cho các câu lệnh không thể kết thúc để giải phóng tài nguyên. Khi đó, tiến trình đọc/ghi dữ liệu sẽ bị lỗi, không thể hoàn thành.
2. Cách phát hiện Deadlock
Deadlock càng phát hiện sớm thì việc xử lý các xung đột giữa các câu lệnh trong quá trình quản lý cơ sở dữ liệu càng kịp thời, nhanh chóng. Tránh tình trạng hệ thống bị trì trệ quá lâu.
Cách phát hiện Deadlock nhanh chóng và hiệu quả nhất, chính là sử dụng Wait for Graph. Phương pháp này sẽ phản ánh lỗi dưới dạng biểu đồ dựa trên các transaction và lock chúng trên tài nguyên được sử dụng.
Nếu biểu đồ mà Wait for graph hiển thị là một vòng tròn khép kín nghĩa là có Deadlock xảy ra. Đối với các cơ sở dữ liệu có dung lượng quá lớn, để phát hiện Deadlock, chúng ta sẽ sử dụng tới phương pháp Wound Wait Scheme và Wait Die Scheme.
3. Cách phòng - tránh Deadlock hiệu quả
3.1 Cách phòng Deadlock
Để phòng Deadlock xảy ra, chúng ta có thể áp dụng những cách sau đây:
- Loại bỏ không có trưng dụng: CPU không thể trưng dụng một số tài nguyên từ quy trình đọc/ghi các câu lệnh. Đây chính là nguyên nhân dẫn tới hiện tượng Deadlock. Để phòng ngừa, chúng ta cần loại bỏ không có trưng dụng để lấy được tài nguyên trong quá trình chờ.
- Bỏ chờ đợi vòng tròn: Khi Deadlock xảy ra, quá trình hoạt động của hệ thống sẽ bị mắc kẹt trong trạng thái chờ tài nguyên. Thông qua biểu đồ Wait for graph, chúng ta có thể thấy rõ hiện tượng deadlock. Khi đó, các tài nguyên sẽ theo thứ tự tăng hoặc giảm. Đối với trường hợp tăng tài nguyên thì chỉ cấp quyền truy cập vào tài nguyên bổ sung mới. Nếu số tài nguyên giảm thì cần giải phóng tài nguyên cũ để nhận tài nguyên mới
3.2 Cách tránh Deadlock
Để tránh deadlock, các hệ điều hành sẽ duy trì lịch sử tài nguyên tối đa để đáp ứng cho một quá trình trước khi hệ thống được thực thi. Lúc này, trạng thái của hệ thống sẽ được kiểm tra rất sát xao. Đảm bảo hệ điều hành đủ khả năng phân phối tài nguyên cần thiết cho quá trình hoạt động.
4. Cách giảm thiểu nguy cơ Deadlock hiệu quả
Deadlock rất khó để có thể ngăn chặn. Tuy nhiên, chúng ta có thể thực hiện các giải pháp giúp hạn chế và giảm thiểu hiện tượng này một cách đáng kể. Dưới đây là một số cách mà bạn có thể áp dụng.
- Giảm bớt số lượng bảng cần sử dụng trong mỗi câu lệnh. Số bảng tham gia càng ít thì deadlock càng thấp. Tài nguyên sẽ được giải phóng một cách nhịp nhàng.
- Sử dụng các câu lệnh dạng batch để tạo ra một script duy nhất thay vì gọi rời rạc trong database để thực thi câu lệnh.
- Kiểm soát và điều chỉnh thứ tự tác động các bảng giống nhau trong quá trình thực thi câu lệnh để chỉ xảy ra lock, chứ không phải deadlock.
- Giảm thời gian round trip qua đường mạng để giải phóng tài nguyên nhanh hơn. Kết thúc giao dịch sớm hơn.
- Gửi Script dạng batch là cách giúp sap server phân tích được toàn bộ mã Script. Từ đó, tạo ra một execution plan hiệu quả hơn, tránh được hiện tượng deadlock tốt hơn.
Như vậy, chúng ta vừa cùng nhau tìm hiểu về Deadlock là gì. Cách phát hiện và phòng tránh Deadlock. Bạn hãy áp dụng vào thực tiễn để mang lại hiệu quả tốt nhất nhé!