2017-08-03 15 views
7

Tôi thấy trong nhiều ứng dụng mà họ đang sử dụng ràng buộc duy nhất cũng như trong một số ứng dụng thay vì sử dụng ràng buộc duy nhất mà họ đang sử dụng chèn nếu không tồn tại truy vấnRàng buộc duy nhất (Hoặc) Chèn nếu không tồn tại an toàn hơn - Môi trường đa luồng

Trong môi trường nhiều luồng nơi có nhiều cơ hội cố gắng chèn cùng một lúc..có thể là cùng một giây hoặc mili giây quá ...

Trong trường hợp này, tùy chọn nào sẽ là tốt ?? Đi cho một ràng buộc duy nhất hoặc đi cho chèn nếu không tồn tại.

Cảm ơn.

+0

Có ai có đề xuất nào không? – Kathir

Trả lời

3

Tôi muốn sử dụng các khóa duy nhất, vì chúng minh bạch và chúng ngăn trùng lặp ở nguồn. (nghĩa là bạn không thể giới thiệu lỗi trong mã của bạn để thêm dữ liệu trùng lặp hoặc ứng dụng/người khác không thể thêm dữ liệu trùng lặp ngay cả bằng cách chỉnh sửa trực tiếp dữ liệu bảng)

Đối với các ứng dụng đa luồng, trong các bản sao, nhưng việc triển khai tốt có thể đảm bảo tính duy nhất. (Giao dịch đơn lẻ, kiểm tra sự tồn tại và chèn vào cùng một truy vấn, không phải trong các truy vấn khác nhau, cam kết không tự động, v.v.)

Mặt khác, nhược điểm của khóa duy nhất là phí cơ sở dữ liệu. (Không thể nghĩ ra bất cứ nhược điểm khác trên thực tế)

Vì vậy, nói đến điều này:

Lựa chọn 1: Dựa vào cơ sở dữ liệu, có nhiệm vụ là để xử lý dữ liệu và những hạn chế liên quan, trong đó hầu hết các trường là thực sự tốt cả performance- khôn ngoan và đáng tin cậy.

Tùy chọn 2: Viết thủ công mã kiểm tra ràng buộc duy nhất, cuối cùng thực hiện kiểm tra duy nhất bằng truy vấn DB. Và nó không ngăn chặn dữ liệu trùng lặp trong trường hợp có các máy khách ghi khác vào cùng một bảng cơ sở dữ liệu.

Nếu mối quan tâm chính của bạn là hiệu suất, thì điều đó phụ thuộc vào dữ liệu và db của bạn. Bạn cần phải làm một điểm chuẩn.

Nếu không, lựa chọn là rõ ràng.

+0

câu trả lời tuyệt vời !!! – Kathir

Các vấn đề liên quan