2012-03-12 20 views
5

Ứng dụng của tôi SQLite dựa trên hiện đang sử dụng các giao dịch - cả để có thể khôi phục và để cải thiện hiệu suất. Tôi đang xem xét thay thế tất cả các giao dịch bằng các điểm lưu trữ. Lý do là ứng dụng đa luồng (có, sqlite được cấu hình là an toàn chỉ), và trong một số trường hợp, một giao dịch có thể được bắt đầu bởi hai luồng cùng một lúc (trên cùng một db).chuyển tiếp sqlite từ giao dịch sang savepoints

  1. Có lý do gì để KHÔNG làm điều đó?
  2. Có bất kỳ cạm bẫy nào tôi cần phải biết không?
  3. Tôi chỉ cần thay thế BEGIN, COMMIT, ROLLBACK với SAVEPOINT xyz, RELEASE SAVEPOINT xyz, ROLLBACK TO SAVEPOINT xyz?
+1

Tôi đã sử dụng _savepoints bên trong giao dịch để triển khai giao dịch lồng nhau_ nhưng ** những gì bạn cho là vô nghĩa **. savepoints không hoạt động theo cách đó. –

Trả lời

7
It there a reason NOT to do it? 

Có. Nó sẽ không giải quyết bất kỳ vấn đề nào bạn vạch ra. Các điểm lưu được sử dụng chủ yếu để có thể thực hiện một phần dữ liệu. Giao dịch bên ngoài hoặc điểm lưu trữ là những gì thực sự được cam kết. Không có gì thực sự được lưu hoàn toàn cho đến khi điểm lưu trữ ngoài cùng được giải phóng, do đó cập nhật DB. Bạn quay trở lại cùng một vấn đề mà bạn có với các giao dịch chuẩn.

Are there any pitfalls I need to be aware of? 

Có. Các giao dịch hoặc các điểm lưu trữ trong một ứng dụng đa luồng có thể bế tắc khá dễ dàng nếu bạn đang cập nhật cùng một dữ liệu trong hai luồng khác nhau mà tôi giả định là trung tâm của vấn đề. Không có sự khác biệt giữa hai vấn đề này. Bạn nên biết những gì bạn đang cập nhật trong mỗi chủ đề và đồng bộ hóa cho phù hợp.

Nói tóm lại, trừ khi bạn có nhu cầu làm rollback giao dịch một phần, savepoints thực sự sẽ không cung cấp cho bạn nhiều (trừ một thực tế rằng họ được đặt tên.)

Không có bạc đạn ở đây. Có vẻ như bạn cần phân tích nghiêm túc ứng dụng của mình và dữ liệu có thể được cập nhật trong nhiều chuỗi và thêm một số đồng bộ hóa trong ứng dụng của bạn nếu cần.

+1

Cảm ơn! Tôi biết tôi đã thiếu một cái gì đó :-) – noamtm

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