Firebird Silinmiş Kayıtlar İstatistikte Görülüyor

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Firebird Silinmiş Kayıtlar İstatistikte Görülüyor

Mesaj gönderen Kuri_YJ »

Selamlar,

Madem Terminator'ümüz de buradayken kendisine bir soru soralım.

Firebirde bir tablodaki bütün kayıtları sildim. DELETE FROM diyerek sildim.

Ancak DB istatistiği çektiğimde (DBWorkbench ile yaptım bunu) Şu sonuçla karşılaştım.
DOKUMAN_LINK (130)
Primary pointer page: 143, Index root page: 144
Data pages: 1018, data page slots: 7648, average fill: 20%
Fill distribution:
0 - 19% = 874
20 - 39% = 108
40 - 59% = 2
60 - 79% = 0
80 - 99% = 34

Index IX_DOKUMAN_LINK_01 (1)
Depth: 3, leaf buckets: 11, nodes: 11265
Average data length: 1.00, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 5
40 - 59% = 3
60 - 79% = 3
80 - 99% = 0

Index PK_DOKUMAN_LINK (0)
Depth: 3, leaf buckets: 1227, nodes: 2007246
Average data length: 1.00, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 4
20 - 39% = 25
40 - 59% = 492
60 - 79% = 426
80 - 99% = 280
SELECT çektiğimde boş ama page'lerinde (INDEX PAGE'lerinde) hala dolu. Mantığı nedir?

Ayrıca bir şey daha deneyip burdan sonucunu yzacağım. Bu konuda bize bilgi verirsen seviniriz :)

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Madem Terminator'e sordun o cevaplasın o zaman. :wink:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

coderlord yazdı:Madem Terminator'e sordun o cevaplasın o zaman. :wink:
ne oluyor bi durummu var :wink:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Re: Firebird Silinmiş Kayıtlar İstatistikte Görülüyor

Mesaj gönderen fduman »

Kuri_YJ yazdı: Madem Terminator'ümüz de buradayken kendisine bir soru soralım.
Yok canım. Kuri böyle deyince küstüm işte. 8)
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hocam bilen dili döndüğünce açıklasın bence .. Sanırım sadece indekslerden silme yapıyor. Paradoks/Dbase ın kaydın başına '*' koyması gibi bir şey olabilir :?:
Malum bu işi Backup / Restore ile ancak çözebiliyoruz :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

@lordum bi biskrem versem.... :lol:
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
highmemo

Mesaj gönderen highmemo »

Sevgili Kuri_YJ;

Sanırım herkes karşılaşmıştır. Kayıtları sildiğimiz halde DB boyutunda azalma olmaz.

Interbase veya bir çok DB de Sweep ve Garbage Collection, Pack vb.
isimli processler var bunlar neden var ? ne işe yarar diye bakarsan sanırım cevabı almış olursun.

Aşağıda özet bir açıklama var

InterBase uses a multigenerational architecture. This means that multiple versions of data
records are stored directly on the data pages. When a record is updated or deleted,
InterBase keeps a copy of the old state of the record and creates a new version. This can
increase the size of a database.


Yanlışım, eksiğim varsa uyarın lütfen...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Allah iyiliğinizi versin emiii.. Coder'im Lord'um :D Güldürdün beni... Peki peki küsme sen de yanıtla :D

Yardımlarınız için teşekkürler, ancak o bahsettiklerinizi (Paradokstaki * koyma olayı, Garbage collection vs. ben de biliyorum ancak sorduğum sorunun maksadı FB'de Code bazında idi.

Hani Cem YILMAZ diyor ya, derinine inerim ben :) İşte o manada idi.

Yani, silinen kayıtlar DB'de kalıyor, evet sadece index Node'larından düşürülmesi gerekir diye diye düşünüyordum ama nodelarda olduğunu görünce (daha doğrusu istatistiklerde böyle bir şeyle karşılaşınca) şaşırdım.

Ayrıca denemesini yapmak lazım ama sanırım öyle işliyor (Ben denememi 2,350,000 kayıt civarında denemiştim). Bir table açıp, içine 10,000,000 kayıt atıp, sonra DELETE FROM MYTABLE deyip bütün kayıtları sildikten sonra, SELECT * FROM MYTABLE dediğimizde, silinmiş 10,000,000 kaydı hızlıca taradıktan sonra Kayıt yok diye geri dönüyor (gibime geliyor).

Böyle bir durumla karşılaşınca Terminator'e bir sorayım dedim, acaba arkada Code ayağında silinen kayıtlarla ilgili B-Tree index vs. her ne haltımsa, node'ları düşür müyor mu? Sadece silindi diye Node'a işaret koyuyorsa, neden? Maksat nedir?

(Muhtemelen yei gelecek kayıtlar iin yeniden PAGE aç, NODE oluştur dengele gibi ıvır zıvırı hazırda tutup, sadece gelen veriye ilgili NODE'a oturtmak olacak. Hazır elinde NODE'lar varken... Bilmem belki de farklı bir nedendir. İşte bu sebeple sordumdu.

Bunu bilenler varsa açıklasın arkadaşlar :)

Sevgiler.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Şaka yapmıştım yaw. :D

Muhtemelen bir de index'den bilgiyi silip IO zamanı kaybetmemek için bırakıyor Kuri. Zaten bakım niyetine ara sıra indexleri recreate etmek veya VT yedeğinden geri dönmek önerilen yöntemler. Bu esnada da indexlerdeki fazlalıkları atıyor.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

Aşağıda özet bir açıklama var

InterBase uses a multigenerational architecture. This means that multiple versions of data
records are stored directly on the data pages. When a record is updated or deleted,
InterBase keeps a copy of the old state of the record and creates a new version. This can
increase the size of a database.
şunu anlayamıyorum abi bir de pls translater turkish.
Çoğu mesajlarda bunu görüyorum alınıyor bir yerden yapıştırılıyor. Bilen var bilmeyen var. türkcesini yazsak sanırım daha iyi olur. Bence bu formdan herkes faydalanıyor ve ingilizce bilen birisi zaten biz yapıstırmasak da onu daha önce görmüştür anlamıştır. Araştırmacaı milletiz vesselam.

Not:
yine icimden geldi
fahrettin abime saygılar sunarım.
ben bu forma fahrettin abinin mesajları ve verdiği bilgiler sayesinde dahil oldum da o yuzden içinden geldikce saygılarımı sunmak istiyorum.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Elinize bir sözlük alınız ve çeviriniz. Hem ingilizce öğrenmiş olursunuz bir yandan.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

:lol:
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

@musti süpersin valla. Soruya cevabı aramışsın, bulmuşsun. Hem de ingilizce bilmiyorum diyorsun.

Kabaca şöyle çevrilir:
"interbase çoklu-üretimli(multigenerational) mimari kullanır. Yani veri kayıtlarının bir çok sürümü/değişimi direk olarak veri sayfalarına yazılır. Bir kayıt silindiğinde veya değiştirildiğinde, eski kayıt saklanır ve yeni bir kayıt oluşturulur. Bu veritabanı boyutunu şişirir."
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

t-hex hocam teşekkür ederim engin bilgilernizden her zaman faydalanmısımdır ozellikle sp ler konusunda. Bu konudanda biz engilizce bilmeyenlere katkıda bulundunuz sagolun

ama coderlord abi. ne den kızdı anlayamadım vesselam. Birine köy yolu sorarsın oda sana al dünya haritası bak derse lol olur abi.

hörmetler.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

musti yazdı: ama coderlord abi. ne den kızdı anlayamadım vesselam. Birine köy yolu sorarsın oda sana al dünya haritası bak derse lol olur abi.
Yahu niye kızayım. İngilizce öğrenirsin bir yandan dedim. Kötü mü ettim? :)
Kilitli