Firebird Veritabanını tam olarak boşaltma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
habikus
Üye
Mesajlar: 69
Kayıt: 14 Eyl 2011 04:23

Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen habikus »

İçerisinde 5 tane basit table bulunan bir firebird veritabanı dosyam var bütün kayıtlarını silmeme rağmen hala dosya boyutu olarak 65 Mb gözüküyor. Acaba bu sildiklerimi fiziksel olarak silmiyor mu? Veritabanı dosyamı nasıl gerçek manada temizlerim? Yardımcı olan olursa sevinirim.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen White Rose »

Backup-Restore yapın
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen csunguray »

Nasıl yani? Firebird veritabanında basit bir Shrink işlemini gerçekleştiremiyor muyuz? Firebird diye ölenler buna ne cevap verecek? Firebird küçük ve orta boy sistemler için idare eder. Ama kurumsal düzeyde idare edemez.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen sadettinpolat »

habikus yazdı:İçerisinde 5 tane basit table bulunan bir firebird veritabanı dosyam var bütün kayıtlarını silmeme rağmen hala dosya boyutu olarak 65 Mb gözüküyor. Acaba bu sildiklerimi fiziksel olarak silmiyor mu? Veritabanı dosyamı nasıl gerçek manada temizlerim? Yardımcı olan olursa sevinirim.

Veritabanindan sildiginiz dosyalar aninda fiziksel dosyadan silinmez. Bunu firebird arka planda belirli araliklarla otomatik yapar. Firebird degil de kendiniz yapmak isterseniz Sweep islemi ile yapabilirsiniz. Backup - Restore islemi de benzer etkiyi yapar.

http://www.firebirdsql.org/manual/gfix- ... eping.html
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen Kuri_YJ »

Selamlar,

Firebird'ün yapısında Record Versioning vardır ve siz herhangi bir Update yaptığınızda, Firebird gider eski kaydı işaretler ve yeni bir kayıt oluşturur. Yani aslında siz önceki kaydı gerçekten update yapmazsınız. Silme işleminde de kaydı silmez, silindi diye işaret koyar. Böylelikle record versioning işlemiyle hem DB'nin kayıtlarını tek tek geriye doğru tutar.

Bu shrink olayı, diğer DB üreticilerinde çok elzem olmak ile birlikte, illa shrink edeceğim derseniz, sadettinpolat arkadaşımızın söylediği gibi Sweep işlemiyle gerçekleştirebilirsiniz. Normalde bunu FB server, eğer ayarını değiştirmezseniz 20,000 Kayıtta bir otomatik olarak yapar.

Vereceğim Link'te bu shrink olayı ve Database Page yapısının nasıl işlediği konusunda özet ve anlaşılır bir bilgi bulunmaktadır.

http://www.ibphoenix.com/resources/docu ... ign/doc_23

Orada da bahsedildiği gibi, Pageleri silmek, yeniden kullanmaktan daha maliyetli olduğundan, FB geliştirmenleri, silinen veya eski version recordları belirli aralıklarda kullanırlar. Bunun dışında Backup/Restore yaptığınızda aradaki bu eski version kayıtlar alınmayacağından (defaultta alma dendiği için) DB Size küçülür.

Kolay Gelsin
Adnan
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Re: Firebird Veritabanını tam olarak boşaltma

Mesaj gönderen Commandx »

Manual temizleme
fbird BIN klasörüne dos prompt'dan gir
GFIX.EXE dos'tan adını yazarak çalıştır
alttaki kodu vt adını yolunu şifreni yaz, kod cebine gelsin. :p

Kod: Tümünü seç

gfix –sweep c:\test1.fdb -user SYSDBA –pas masterkey
[code/]
bu komut ile elle süpürme
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Cevapla