last_insert_id in MySQL and locking

The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.

Tại cùng 1 thời điểm, “một đống client” kết nối tới hệ thống của bạn và sử dụng dịch vụ, dữ liệu chèn thêm vào của mỗi client có 1 id và id này là chìa khóa để xử lý các giao tác khác. Việc lấy ra id vừa chèn lúc này có thể bị conflict giữa các client? Vấn đề sẽ được giải quyết nhờ đồng bộ hóa với cơ chế locking. Tuy nhiên, với cơ sở dữ liệu MySQL và khóa chính auto_increment thì bạn hoàn toàn không cần biết locking, hệ thống vẫn chạy ngon như kẹo bon bon…

Nói tóm lại là chơi với id bản ghi cuối của em MySQL thì yên tâm đê, không phải xoắn. Dù sao thì kiến thức về locking thu được trong quá trình “công tác” dự án megashare.vn bên VnComputing, ISDS cũng rất là bổ ích và lý thú. Berkeley, biết có ngày nào anh gặp lại?