Tôi có một bảng MySQL nhiệm vụ để thực hiện, mỗi hàng có tham số cho một tác vụ duy nhất.
Có nhiều ứng dụng công nhân (có thể trên các máy khác nhau), thực hiện các tác vụ trong một vòng lặp.
Các ứng dụng truy cập cơ sở dữ liệu bằng cách sử dụng các API C gốc của MySQL.MySQL UPDATE và SELECT trong một lần
Để sở hữu một công việc, một ứng dụng làm điều gì đó như thế:
Tạo một id toàn cầu duy nhất (vì đơn giản, giả sử nó là một con số)
UPDATE tasks
SET guid = %d
WHERE guid = 0 LIMIT 1
SELECT params
FROM tasks
WHERE guid = %d
Nếu truy vấn cuối cùng trả về một hàng, chúng tôi sở hữu nó và có các thông số để chạy
Có cách nào để đạt được hiệu quả tương tự (ví dụ: 'sở hữu' một hàng và nhận các tham số của nó) trong một cuộc gọi đến máy chủ?
Khóa quá mức trong trường hợp này. Giải pháp trên sử dụng khóa nội bộ MySQL, do đó nhanh hơn nhiều. –
Tôi thấy điểm của bạn .... bạn không cần khóa ở đây ... Tôi không biết một cuộc gọi nào. – Daniel