Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
+1 oy
18 gösterim

Büyük boyutta veri kayıt etmeye çalışıyorum. İki yöntem buldum bulk insert ve single insert .

Bazı kaynaklar bulk bazıları ise single insert hızlıdır diyor.

Single insert sırasında hint kullan diyen var, kullanmayın diyen de;

log tablosu kullanmak istedim db yetkilerinden dolayı oluşturamadım ve test edemedim şu kısmı: 

SQL> insert /*+ APPEND */
  2  into   test_table
  3  select *
  4  from   test_table_deneme
  5  log errors
  6  reject limit unlimited
  7  /
LOG ERRORS INTO err$_dest ('INSERT') REJECT LIMIT UNLIMITED;

Bulk olarak ,BULK COLLECT, FORALL ve SAVE EXCEPTIONS kullanımına göre daha hızlını testpit eden bir sayfa var. 

Ben single insert (hintli) ve bulk insert denediğimde bulk'In daha hızlı olduğunu gördüm.  Sizce hangi yöntemi izlemeli, alternatif bir yöntem var mı bildiğiniz?

https://www.rittmanmead.com/blog/2005/12/performance-issues-with-dml-error-logging-and-conventional-path-inserts/

Not: Buradaki tablolar bende viewla. viewlar oluşturarak gerekli tabloları join yapıyor,sonra da oluşan view select'inin sonucunu asıl tabloma kayıt atmaya çalışıyorum.

Veri Tabanı kategorisinde (1.7k puan) sordu

1 cevap

0 oy
Bulk ve single aslında kelimelerinden yola çıkarsan yaptığın işleme göre seçmen gereken yöntemler.

Eğer bir kaynaktan aldığın bütün kayıtları bir hedefe yazıyorsan bulk işlem daha hızlı olacaktır. Ama tek tek kayıtlar üzerinde bir koşul çalıştırma durumunu da kaçırmış olabilirsin.

Eğer kayıtları tek tek ekleyeceksen eklemeden önce kayıtlar üzerinde işlem yapabilmen de olası. Ama muhtemelen daha yavaş olacaktır.

/+append / hintine gelince; bu hint single insert ile beraber veri dosyasına (datafile) yer optimizasyonu yapmadan dosyanın en sonuna eklemesi için kullanılan bir yöntem. Hızlı olduğu kesin ama daha fazla fiziksel alan kullanmana yol açacaktır. Sıfırdan ekliyorsan bir sorun olmayabilir ama çalışan bir sistem üzerinde tercih edilmeyebilir. Duruma bağlı.
(3.4k puan) cevapladı

İlgili sorular

0 oy
0 cevap 6 gösterim
+1 oy
1 cevap 9 gösterim
0 oy
1 cevap 16 gösterim
...