Điều gì hiệu quả hơn - có IDbTransaction trong mã .net hoặc xử lý nó trong cơ sở dữ liệu? Tại sao?Hiệu quả của giao dịch trong mã so với DB
Các tình huống có thể có trong đó nên được sử dụng là gì?
Điều gì hiệu quả hơn - có IDbTransaction trong mã .net hoặc xử lý nó trong cơ sở dữ liệu? Tại sao?Hiệu quả của giao dịch trong mã so với DB
Các tình huống có thể có trong đó nên được sử dụng là gì?
Khi nói đến giao dịch dựa trên kết nối (IDbTransaction
), hiệu suất tổng thể sẽ khá giống nhau - nhưng bằng cách xử lý nó trong mã .NET bạn có thể thuận tiện mở rộng nhiều hoạt động cơ sở dữ liệu trên cùng một kết nối. Nếu bạn đang làm quản lý giao dịch bên trong TSQL bạn thực sự nên giới hạn nó vào truy vấn TSQL đơn. Có thể có thêm một chuyến đi khứ hồi để bắt đầu/kết thúc, nhưng điều đó không có khả năng làm tổn thương bạn. Nó là khá hiếm (những ngày này) mà tôi sẽ tự viết các giao dịch dựa trên TSQL - có lẽ nếu tôi đã viết một cái gì đó gọi trực tiếp bởi máy chủ thông qua một đại lý (chứ không phải từ mã ứng dụng của riêng tôi).
Sự khác biệt lớn giữa IDbTransaction
và TransactionScope
thấy Transactions in .net cho hơn, nhưng phiên bản ngắn gọn là TransactionScope
là hơi chậm (tùy thuộc vào kịch bản), nhưng có thể span nhiều kết nối/cơ sở dữ liệu (hoặc các nguồn lực khác).
Cảm ơn Marc ... Tôi vẫn muốn biết tại sao một người dùng IDbTransaction khi anh ta có thể sử dụng một giao dịch trong một SQL được lưu trữ proc –
Bởi vì bạn có thể muốn IDbTransaction trải rộng nhiều hoạt động nguyên tử có lẽ đã tồn tại). Bạn không thể làm điều đó nếu các giao dịch bên trong sproc, nhưng bạn có thể nếu nó chỉ là kết nối dựa. Nó cũng là tốt hơn từ một tách góc quan tâm: bạn di chuyển responsibiliy cho các giao dịch đi từ sproc, ai là công việc là để cập nhật một số dữ liệu (vv). –
(trả lời bình luận) –