Tất nhiên, điều đó tùy thuộc.
Tùy thuộc vào công việc mà quy trình được lưu trữ cụ thể thực hiện và, có lẽ, không quá nhiều "tỷ lệ đọc/ghi" mà bạn đề xuất. Nói chung, bạn nên xem xét kèm theo một đơn vị công việc trong một giao dịch nếu đó là truy vấn có thể bị ảnh hưởng bởi một số truy vấn chạy đồng thời khác. Nếu điều này nghe không xác định, nó là. Thường khó dự đoán trong hoàn cảnh nào một đơn vị công việc cụ thể đủ tiêu chuẩn làm ứng cử viên cho điều này.
Một nơi tốt để bắt đầu là xem xét chính xác CRUD đang được thực hiện trong đơn vị công việc, trong trường hợp này trong quy trình được lưu trữ của bạn và quyết định xem nó có bị ảnh hưởng hay không. công việc khác quan trọng đối với kết quả cuối cùng của công việc này đang được thực hiện (hoặc thậm chí, ngược lại). Nếu câu trả lời là "Có" cho cả hai thì hãy xem xét gói đơn vị công việc trong một giao dịch.
Điều này cho thấy rằng bạn không phải lúc nào cũng quyết định hoặc là sử dụng hoặc không sử dụng giao dịch s, thay vào đó bạn nên áp dụng chúng khi có ý nghĩa.Sử dụng các thuộc tính được xác định bởi ACID (Tính nguyên tử, nhất quán, Cách ly và Độ bền) để giúp quyết định thời điểm có thể xảy ra trường hợp này. Một điều khác cần xem xét là trong một số trường hợp, đặc biệt nếu hệ thống phải thực hiện nhiều thao tác liên tiếp nhanh, ví dụ: ứng dụng xử lý giao dịch khối lượng lớn, bạn có thể cần phải cân nhắc chi phí hiệu suất tương đối của giao dịch. Tùy thuộc vào kích thước của đơn vị công việc, một cam kết (hoặc rollback) của một giao dịch có thể tốn kém tài nguyên, có thể tác động tiêu cực đến hiệu suất của hệ thống của bạn một cách không cần thiết hoặc ít nhất, với lợi ích hạn chế.
Thật không may, đây không phải là câu hỏi dễ dàng để trả lời chính xác: "Nó phụ thuộc".
Nguồn
2008-09-13 09:49:10
"sử dụng tất cả thời gian, trừ khi bạn có lý do chính đáng không" điều này giống như bảo mọi người đội mũ bảo hiểm mọi lúc, trừ khi họ có lý do chính đáng. –
Đó là giả định rằng việc sử dụng các giao dịch là gây phiền nhiễu hoặc vô lý theo bất kỳ cách nào, mà tôi không nghĩ là như vậy. –
Tôi nghĩ @Jeff Atwood đã không đọc đoạn văn đầy đủ trước khi đi đến kết thúc mũ bảo hiểm. – Codeslayer