OLE DB, ODBC ve Oracle bağlantı havuzu

Havuz bağlantıları, uygulamanızın performansını ve ölçeklenebilirliğini önemli ölçüde artırabilir. Bu bölümde OLE DB, ODBC ve Oracle için .NET Framework veri sağlayıcıları için bağlantı havuzu oluşturma ele alınmaktadır.

Oledb

OLE DB için .NET Framework Veri Sağlayıcısı, OLE DB oturum havuzu kullanarak bağlantıları otomatik olarak havuza alır. Bağlan dize bağımsız değişkenleri, havuz oluşturma dahil OLE DB hizmetlerini etkinleştirmek veya devre dışı bırakmak için kullanılabilir. Örneğin, aşağıdaki bağlantı dizesi OLE DB oturum havuzunu ve otomatik işlem listesini devre dışı bırakır.

Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;

Bağlantıyı havuza döndürmek için kullanmayı bitirdiğinizde bağlantıyı her zaman kapatmanızı veya atmanızı öneririz. Açıkça kapatılmayan Bağlan iyonları havuza döndürülmeyebilir. Örneğin, kapsamın dışına çıkan ancak açıkça kapatılmayan bir bağlantı yalnızca en büyük havuz boyutuna ulaşıldıysa ve bağlantı hala geçerliyse bağlantı havuzuna döndürülür.

OLE DB oturumu veya kaynak havuzu hakkında daha fazla bilgi ve OLE DB sağlayıcı hizmeti varsayılanlarını geçersiz kılarak havuza alma özelliğini devre dışı bırakma hakkında daha fazla bilgi için bkz . OLE DB Programcı Kılavuzu.

ODBC

ODBC için .NET Framework Veri Sağlayıcısı Bağlan havuzu, bağlantı için kullanılan ODBC Sürücü Yöneticisi tarafından yönetilir ve ODBC için .NET Framework Veri Sağlayıcısı etkilenmez.

Bağlantı havuzunu etkinleştirmek veya devre dışı bırakmak için, Denetim Masası Yönetici Istrative Tools klasöründe ODBC Veri Kaynağı Yönetici istrator'ı açın. Bağlan ion Havuzu sekmesi, yüklenen her ODBC sürücüsü için bağlantı havuzu parametreleri belirtmenize olanak tanır. Belirli bir ODBC sürücüsünün Bağlan havuz değişiklikleri, o ODBC sürücüsünü kullanan tüm uygulamaları etkiler.

OracleClient

Oracle için .NET Framework Veri Sağlayıcısı, ADO.NET istemci uygulamanız için otomatik olarak bağlantı havuzu sağlar. Bağlantı havuzu davranışını denetlemek için birkaç bağlantı dizesi değiştirici de sağlayabilirsiniz (bu konunun devamında yer alan "Bağlan ion Dize Anahtar Sözcükleriyle Bağlan Ion Havuzunu Denetleme" bölümüne bakın).

Havuz oluşturma ve atama

Bir bağlantı açıldığında, havuzu bağlantıdaki bağlantı dizesi ile ilişkilendiren tam eşleştirme algoritmasına dayalı olarak bir bağlantı havuzu oluşturulur. Her bağlantı havuzu ayrı bir bağlantı dizesi ile ilişkilendirilir. Yeni bir bağlantı açıldığında, bağlantı dizesi var olan bir havuzla tam olarak eşleşmediyse yeni bir havuz oluşturulur.

Oluşturulduktan sonra, etkin işlem sona erene kadar bağlantı havuzları yok olmaz. Etkin olmayan veya boş havuzların bakımı çok az sistem kaynağı kullanır.

Bağlan Ion Ekleme

Her benzersiz bağlantı dizesi için bir bağlantı havuzu oluşturulur. Bir havuz oluşturulduğunda, en düşük havuz boyutu gereksiniminin karşılanması için birden çok bağlantı nesnesi oluşturulur ve havuza eklenir. Bağlan ions havuza gerektiği gibi en büyük havuz boyutuna kadar eklenir.

Bir OracleConnection nesne istendiğinde, kullanılabilir bir bağlantı varsa havuzdan alınır. Kullanılabilir olması için, bağlantının şu anda kullanılmamış olması, eşleşen bir işlem bağlamı olması veya herhangi bir işlem bağlamıyla ilişkilendirilmemesi ve sunucuya geçerli bir bağlantı olması gerekir.

Havuz boyutu üst sınırına ulaşıldıysa ve kullanılabilir bağlantı yoksa istek kuyruğa alınır. Bağlantı havuzu oluşturucu, havuza geri gönderilen bağlantıları yeniden ayırarak bu istekleri karşılar. Bağlan yonlar kapatıldığında veya atıldığında havuza geri salınırlar.

Bağlan Kaldırma

Bağlantı havuzu oluşturucu, uzun bir süre boşta kaldığında veya havuz oluşturucu sunucuyla bağlantının kesildiğini algılarsa bir bağlantıyı havuzdan kaldırır. Bu, yalnızca sunucuyla iletişim kurmaya çalışıldıktan sonra algılanabilir. Artık sunucuya bağlı olmayan bir bağlantı bulunursa, geçersiz olarak işaretlenir. Bağlantı havuzu oluşturucu, havuza bırakılmış ve geçersiz olarak işaretlenmiş nesneleri bulmak için bağlantı havuzlarını düzenli aralıklarla tarar. Bu bağlantılar daha sonra kalıcı olarak kaldırılır.

Kaybolan bir sunucuya bağlantı varsa, bağlantı havuzu oluşturucu kopmuş bağlantıyı algılamadıysa ve geçersiz olarak işaretlediyse bu bağlantı havuzdan çekilebilir. Bu durum oluştuğunda bir özel durum oluşturulur. Ancak, yeniden havuza bırakmak için bağlantıyı kapatmanız gerekir.

sınıfınızın yönteminde Connection, bir veya başka bir DataReaderyönetilen nesne üzerinde Finalize veya çağırmayın CloseDispose. Sonlandırıcıda yalnızca sınıfınızın doğrudan sahip olduğu yönetilmeyen kaynakları serbest bırakın. Sınıfınız yönetilmeyen kaynaklara sahip değilse, sınıf tanımınıza bir Finalize yöntem eklemeyin. Daha fazla bilgi için bkz . Çöp Toplama.

İşlem Desteği

Bağlan ions havuzdan çekilir ve işlem bağlamı temelinde atanır. İstekte bulunan iş parçacığının bağlamı ve atanan bağlantı eşleşmelidir. Bu nedenle, her bağlantı havuzu ilişkili işlem bağlamı olmayan bağlantılara ve her birinin belirli bir işlem bağlamıyla bağlantı içeren N alt bölümlere ayrılır.

Bir bağlantı kapatıldığında, işlem bağlamı temelinde havuza ve uygun alt bölüme geri serbest bırakılır. Bu nedenle, dağıtılmış bir işlem hala beklemede olsa bile bir hata oluşturmadan bağlantıyı kapatabilirsiniz. Bu, dağıtılmış işlemi daha sonra işlemenize veya durdurmanıza olanak tanır.

Bağlan ion Dize Anahtar Sözcükleriyle Bağlan Ion Havuzunu Denetleme

ConnectionString nesnesinin özelliği, bağlantı havuzu mantığının OracleConnection davranışını ayarlamak için kullanılabilecek bağlantı dizesi anahtar/değer çiftlerini destekler.

Aşağıdaki tabloda, bağlantı havuzu davranışını ayarlamak için kullanabileceğiniz değerler açıklanmaktadır ConnectionString .

Veri Akışı Adı Varsayılan Açıklama
Connection Lifetime 0 Havuza bir bağlantı döndürülürse, oluşturma süresi geçerli saatle karşılaştırılır ve bu zaman aralığı (saniye cinsinden) tarafından Connection Lifetimebelirtilen değeri aşarsa bağlantı yok edilir. Bu, kümelenmiş yapılandırmalarda çalışan bir sunucu ile yeni çevrimiçi duruma getirilmiş bir sunucu arasında yük dengelemeye zorlamak için kullanışlıdır.

Sıfır (0) değeri havuza alınan bağlantıların en fazla zaman aşımına sahip olmasına neden olur.
Enlist 'true' olduğunda true, bir işlem bağlamı varsa havuz oluşturucu bağlantıyı oluşturma iş parçacığının geçerli işlem bağlamında otomatik olarak listeler.
Max Pool Size 100 Havuzda izin verilen en fazla bağlantı sayısı.
Min Pool Size 0 Havuzda tutulan en az bağlantı sayısı.
Pooling 'true' olduğunda true, bağlantı uygun havuzdan çekilir veya gerekirse oluşturulur ve uygun havuza eklenir.

Ayrıca bkz.