forced writes ist ein sicherheitsaspekt, der der wichtig ist.
forced writes aktiv=
beim commit werden alle geänderten datenpages in korrekter Reihenfolge so auf die Festplatte
geschrieben, das auch im Fehlerfall (serverabsturz) immer noch eine korrekte Datenbankdatei
auf der Festplatte zu finden ist und beim Neustart des Servers sofort weiter gearbeitet
werden kann
forced writes nicht aktiv=
beim commit werden die geänderten datenpages an das windows Betriebssystem übergeben, welches
dann bei Gelegenheit irgendwann mal die Daten auch auf die Festplatte schreibt. Das geschieht
aber in einer anderen Reihenfolge. Sollte dabei nun der Server ausfallen ist keineswegs
sichergestellt, das nach dem Neustart die
DB benutzbar ist.
Was macht firebird anders?
Bei forced writes false wird trotzdem nach n operation oder n sekunden die datei in der richtigen
reihenfolge geschrieben. das kostet ggf Leistung. Das lässt sich bei Bedarf in der firebird.conf datei
anpassen.
Für einen Test sind 1000 Operationen mit 1000 Commits durchaus legitim, wenn das denn wirklich
so auftauchen wird. Bei derartigen minimaloperationen wie einem simplen Update ist das aber
eher nicht der Fall.
Wie schon gesagt: In meinem Test habe ich aber 800000 Operation in einer Transaktion gemacht und
da sieht fb2 wesentlich besser aus. Du solltest deine Testläufe auch erheblich vergrößeren, 1000
Operation lassen viel zu viel Raum für zufällige Einflüsse.
Ich würde aber ebenfalls immer versuchen mit den Transaktionen sparsam umzugehen. Das kostet nur
unnötig Performance. So etwas wie prepare und starttransaction sollte immer außerhalb einer
Schleife stehen.
Gruß
Holger
www.firebird-conference.com