Tôi không nghĩ rằng câu hỏi của bạn thực sự là cơ sở dữ liệu bất khả tri. Câu trả lời đúng có thể phụ thuộc vào chi tiết triển khai, có thể thay đổi tùy theo nhà cung cấp và nhà cung cấp và thay đổi với phiên bản tiếp theo. Tôi sẽ kiểm tra đồng thời trước khi chọn bất kỳ cách tiếp cận nào trên bất kỳ RDBMS nào.
Ngay bây giờ, trên SQL Server 2008 R2, tôi đang sử dụng như sau:
Đồng thời thấp và số lượng sửa đổi thấp. Để lưu một hàng đơn, tôi tuần tự hóa bằng sp_getapplock và sử dụng MERGE. Tôi nhấn mạnh kiểm tra theo đồng thời cao để xác minh rằng nó hoạt động.
Đồng thời và / hoặc khối lượng cao hơn. Để tránh đồng thời và tăng hiệu suất, tôi không lưu một hàng tại một thời điểm. Tôi tích lũy các thay đổi trên máy chủ ứng dụng của mình và sử dụng TVP để lưu các đợt. Tuy nhiên, để tránh các vấn đề liên quan đến đồng thời, tôi tuần tự hóa bằng cách sử dụng sp_getapplock trước MERGE. Một lần nữa, tôi nhấn mạnh kiểm tra theo đồng thời cao để xác minh rằng nó hoạt động.
Do đó, chúng tôi có hiệu suất tốt và không có vấn đề liên quan đến đồng thời trong sản xuất: không có bế tắc, không vi phạm ràng buộc PK / duy nhất, v.v.