2016-05-14 17 views
6

Aşağıdaki alıntılanan alıntılar bu noktada çelişkili görünmektedir.'Commit Retaining', Firebird performansını mı kullanıyor?

(Onlar bence ikisi de oldukça eski, ikincisi 2004 ve ilk Borland yüzden de eski olmalıdır bahseder, belkide eski.)

önce bu istinat taahhüt önermek gibi görünüyor İşlemi aktif tutar ve böylece OIT'i sabitler.

İkincisi, anladığımda, bir taahhütte bulunmanın mevcut TID'nin taahhüt edildiği ve işlemin canlı tutulduğu, ancak yeni bir TID ile işaretlendiği ve bu nedenle OIT'i yapıştırmadığı anlamına gelir. Bu ikinci ekstre, Interbase ile ilgilidir, bu, görünen çelişkiyi açıklar mı bilmiyorum.

Firebird Documentation Özü:

Firebird (ve Interbase) ile

, için nedenler işlemleri İstinat Teslim süresiz ilginç kalır. Çöp toplama, “standart” Borland RAD araçları veritabanı uygulamasına ve Commit Retaining yöntemini kullanan diğer tüm uygulamalarına etkinliğini sonlandırır.

Embarcadero Blog post özü

oku işlenen, yazma okuma: Bir zaman zaman istinat taahhüt yaparsanız

Bu işlem performansı üzerinde hiçbir olumsuz etkisi ile sonsuza çalıştırabilirsiniz. Eğer istinat (ya COMMIT RETAIN ile API veya kullanarak) Firebird ile, gerçekten bitti değil başlatılan işlem, sadece dahili olarak başlatılmıştır yeni işlem görülebilen işlemlerin kümesi ile ilişkili alır taahhüt kullanmak

+2

Firebird, 2000 yılında InterBase'den kaldırıldı ve o zamandan bu yana ayrıldı. Tüm niyet ve amaçlar için farklı veri tabanları olarak düşünülmelidirler, kendi quirkleri vb. Ile birlikte, biri için tarif edilen sınırlamaların diğeri için de geçerli olduğunu düşünmeyin. Bu, artık doğru olmayan tarihi bir ortaklığa atıfta bulunabileceğinden, _ "(ve InterBase)" gibi metinlerle de ilgilidir. –

cevap

4

Aynı zamanda eski (ler) i aktif halde tutarken.

Bu, En Eski İlginç ve En Eski Aktif işlemlerin hareket etmediği ve işlemin gerçekten işlenene kadar çöplerin toplanamayacağı geri sürümlerin biriktiği anlamına gelir. Bu, sonuç olarak sorguların, performans etkisine sahip olabilecek daha uzun bir kayıt zinciri zinciri taraması gerekeceği anlamına gelir.

Bazı eniyilemelerin mümkün olduğunu varsayalım, örneğin, orijinal işlemin, işlemde başlatılan açık bir imleç yokken işlenmiş olarak işaretlenmiş olması muhtemeldir (taahhüt tutmanın özelliklerinden biri imleçlerin kapalı olmamasıdır. işlem yapmazsa, - eğer yanılmadım - eski işlem içeriğinin kullanılabilir kalmasını gerektirir). Bu, InterBase'in taahhüt edilen işlemleri okumak için yaptığı bir şey olabilir.

Bu, bir isql oturumunu başlatarak kendiniz tarafından görülebilir ve bazı ekler ekler tutturma ile birlikte yapılır: gstat -h'u birlikte kontrol ederseniz, En Eski İlginç ve En Eski Aktif işlemlerin gerçekten siz taşınana kadar hareket etmeyeceğini fark edeceksiniz. taahhüt.

+1

Teşekkürler Mark, soruyu cevapladınız ama muhtemelen aklımda iki kat daha fazla büyüttünüz! Belki başka bir soru soracağım ya da bunu anlayamazsam 2! – kjack