pythontr.com
Büyük Veritabanları üzerinde çalıştıysanız bazen tabloları belirli kayıtları üzerinden silme işlemi yapmak istemişsinizdir. Bizimde başımıza böyle bişey geldi. Müşterimize ait database de LOG tablosunda 50.000.000 civarında kayıt oluştuğunu gördük. Bunu sistematik bir şekilde azaltmak istediğimiz için belirli kayıt silme aşamalarından sonra commit leme yaparak sisteme nefes aldıracağımıza düşünüyoruz.
SET SERVEROUTPUT ON declare say INTEGER; begin say := 0; DBMS_OUTPUT.ENABLE(1000000); DBMS_OUTPUT.PUT_LINE('Silme Basladi!'); while say < 100 LOOP delete from test where test_dlt = 1 and rownum <= 1000; DBMS_OUTPUT.PUT_LINE( SQL%ROWCOUNT || ' rows deleted'); -- EXIT WHEN SQL%ROWCOUNT = 0; say := say + 1; COMMIT; END LOOP; COMMIT; end;
SET SERVEROUTPUT ON begin DBMS_OUTPUT.ENABLE(1000000); DBMS_OUTPUT.PUT_LINE('Silme Basladi!'); LOOP delete from test where test_dlt = 1 and rownum <= 1000; DBMS_OUTPUT.PUT_LINE( SQL%ROWCOUNT || ' rows deleted'); EXIT WHEN SQL%ROWCOUNT = 0; COMMIT; END LOOP; COMMIT; end;
Yorumlar