0 oy
11 gösterim
Veritabanı üzerindeki bir tabloda DELETE komutu çalıştırmakla TRUNCATE çalıştırmak arasında nasıl bir fark vardır? Diskte tutulan yer anlamında nasıl bir sonuç ortaya çıkıyor?
Veri Tabanı kategorisinde (193 puan) | 11 gösterim

1 cevap

+1 oy

Truncate'te HWM(High Water Mark) yani bir nevi tabloda en son kaydın tutulduğu yeri tutan değer sıfıra çekilir. Böylece tablodaki verinin tuttuğu alan da db'ye iade edilebilir. Delete işlemi yaptığımızda ise HWM değeri aynı kalır. (Tablonun kapladığı alan değişmez.) Yani sadece delete yaparak veritabanında yer açamayız. Delete işleminden sonra  alter table tablo_adi move; diyerek boşalan alanı kullanılabilir hale getiririz.(Bu satırların rowid değerleri değişir. Buna dikkat etmek gerekir.)

Ayrıca, truncate işlemi roll back yapılamaz. Milyon satırlık tabloyu truncate ederken, execute demeden önce patronun sizi bulamayacağı bir yere bilet almayı ihmal etmeyin. :)

Delete işlemi roll back yapılabilir.

(192 puan)
Birbirinden değerli Türkçe Blog yazarlarını takip edebilmek için ziyaret edebileceğiniz bir internet sitesi. yazarlar.hasscript.com