Özellikleri özetlemek gerekirse: Bir satıcı (Oracle) veritabanına yaklaşık 5 milyon satır eklememiz gerekir. OracleBulkCopy
(ODP.NET) kullanarak 500 bin satırlık gruplar için her şey harika gidiyor , ancak 5M'ye kadar ölçeklendirmeye çalıştığımızda, 1M işaretine ulaştığında performans yavaşlamaya başlar, daha fazla satır yüklendiğinde ve yavaş yavaş yavaşlar 3 saat sonra zaman aşımına uğrar.
Bunun tablodaki birincil anahtarla ilgili olduğundan şüpheleniyorum, ancak bilgi için Oracle forumlarını ve Stack Overflow'u trol ediyordum ve okuduğum şeylerin birçoğu (ayrıca, birçok yazı birbiriyle çelişiyor gibi görünüyor) ) . Birisinin süreci doğrudan ilgili bazı sorularla ilgili olarak rekor kıracağını umuyorum:
Does
OracleBulkCopy
sınıf konvansiyonel veya doğrudan yol yükleme kullanılır? Bunu şu şekilde onaylamamın bir yolu var mı?Varsayarsak o yapar kullanımı doğrudan yol yükleme: Oracle otomatik yük ve koyar geri çevrimiçi sonra onları sırasında kullanılamaz tüm endeksler ayarlar doğru mu? Bu etki için çeşitli ifadeler okudum ama yine, bunu teyit edemez.
# 2 doğruysa, toplu kopyalama işlemini başlatmadan önce tabloda hangi dizinlerin olduğunu farketmeli mi? Öyleyse neden?
# 3 ile ilgili olarak, genel olarak, kullanılmayan bir indeks ile toplu yükleme ile indeksin yükten önce bırakılması ve daha sonra yeniden oluşturulması arasında herhangi bir pratik fark var mı?
2. Eğer değil , doğru ya Anlamıyorum bazı uyarılar varsa, o zaman herhangi bir faydası olur ki açıkça dökme yük önce endeksi kullanılamaz hale ve sonra açıkça sonra onu yeniden?
Daha fazla kayıt eklendikçe toplu kopyalama işleminin giderek daha yavaş büyümesine neden olabilecek başka dizin var mı? (Toplu işlemlerin günlüğe kaydedilmemesini beklememe rağmen, günlük kaydıyla ilgili bir şey olabilir mi?)
Gerçekten varsa hiçbir İlk PK / dizin bırakarak kenara enfiye performans kalkmak başka bir yol, hangi adımları ben endeksi tamamen yok olmaz emin olmak için alabilir, yani veritabanına bağlantı içinde kaybolması durumunda sürecin ortasında?