2012-03-12 17 views
5

Savepoint için - geri alabilecek olmanın ve performansını geliştirmek için hem. Tüm işlemleri tasarruf noktaları ile değiştirmeyi düşünüyorum. Bunun nedeni, uygulamanın çok iş parçacıklı olmasıdır (evet, sqlite iş parçacığı güvenli olacak şekilde yapılandırılmıştır) ve bazı durumlarda aynı anda iki iş parçacığı tarafından bir işlem başlatılabilir (aynı db'de).sqlite geçiş Benim <code>SQLite</code> tabanlı uygulama şu anda işlemleri kullanır

  1. Orada bunu yapmak için değil bir neden?
  2. Farkında olmam gereken herhangi bir tuzak var mı? Sadece SAVEPOINT xyz, RELEASE SAVEPOINT xyz, ROLLBACK TO SAVEPOINT xyz ile BEGIN, COMMIT, ROLLBACK yerine musunuz
  3. ?
+1

İç içe işlemlerin gerçekleştirilmesi için bir işlem içinde _savepoints kullandım_ ama ** önerileriniz saçmalık **. tasarruf noktaları bu şekilde çalışmıyor. –

cevap

7
It there a reason NOT to do it? 

Evet. Açıkladığınız sorunlardan hiçbirini çözmeyecek. Kayıt noktaları, öncelikle verilerin geri dönüşlerini yapabilmek için kullanılır. Dış işlem veya kayıt noktası aslında işlenen şeydir. Hiçbir şey, bu en son kayıt noktası serbest bırakılıncaya kadar tamamen tamamen kaydedilmez, böylece DB güncellenir. Standart işlemlerde sahip olduğunuz aynı soruna geri dönüyorsunuz.

Are there any pitfalls I need to be aware of? 

Evet. Birden fazla iş parçacığı olan bir uygulamadaki işlemler veya kaydetme noktaları, aynı verileri, sorunun özü olduğunu düşündüğüm iki farklı iş parçacığında güncelleştiriyorsanız, oldukça kolay bir şekilde kilitlenebilir. Bu açıdan ikisi arasında fark yoktur. Her iş parçacığında ne güncellediğinizin farkında olmalı ve buna göre senkronize olmalısınız. Kısacası

, kısmi işlem geri alma yapmak için ihtiyaç yoksa, Savepoint gerçekten alışkanlık çok daha (onlar adlandırılır olması dışında.) vermek

burada hiçbir gümüş kurşun yoktur. Uygulamanızın ve birden çok ileti dizisinde güncellenebilen verilerin ciddi bir analizini yapmanız ve gerekirse uygulamanızda bazı eşitleme eklemeniz gerektiği gibi görünüyor.

+1

Teşekkürler! Bir şeyleri özlediğimi biliyordum :-) – noamtm