Einzelnen Beitrag anzeigen

lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#12

AW: Firebird - update BLOB-Field - Datenbank wird immer größer

  Alt 22. Mär 2023, 09:07


Um die recordversionen dieses blobs aufzuräumen, die niemand mehr sehen kann, muss du Firebird einen Hinweis geben. Einfachster weg:
Mach nach deinem update/post und dem noch einzufügenden commit ein simples select count(*) from tabelle where .... mit genau dem
key, wo du gerade deine updates machst. wenn es da zum pk nämlich zB 5 Record versionen gibt, von denen nur 2 sichtbar
sind und keine zu alte transaktion das alles komplett blockiert, dann wird der garbagecollector asynchron beginnen, die nicht mehr benutzen blob pages
wieder freizugeben und diese werden dann bei späteren updates wieder benutzt.

Danke für die ausführliche Antwort. Jeder edit/Post also der Update Vorgang wird in einer eigenen Transaktion ausgeführt, habe das Beispiel nur klein gehalten um das wesentliche Problem zu verdeutlichen. Das gleiche Verhalten habe ich auch wenn ich direkt Update statements ausführe.

Verstehe ich das richtig, das ein einfaches select count(*) den garbage collector anstößt und ich bräuchte kein gfix sweep aufrufen damit die Datenbank wieder kleiner wird?
Oder würde das nur dafür sorgen, das alte Pages wiederverwendet werden?
  Mit Zitat antworten Zitat