Announcement

Collapse
No announcement yet.

forced write

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • forced write

    Hallo Interbase Kollegen

    Interbase 6.01 hat unter Win32 per Default Forced Write deaktiviert!!
    Habt Ihr Erfahrungswerte ob das ganze unter WinNT zu Problemen fuehren kann??

    Uebrigens hat Firebird per Default ForcedWrite Enabled!!

    DANKE
    Karl Schwaegerl

  • #2
    Hallo Karl,

    solange die Stromversorgung nicht über eine USV abgesichert ist sollte <b>forced write</b> immer aktiviert sein (Datensicherheit sollte vor Geschwindigkeit gehen).

    Tschüß

    Torste

    Comment


    • #3
      Hallo zusammen,<br><br>
      ich würde Forced Writes <b>immer</b> aktivieren.<br><br>
      Ist Forced Writes deaktiviert, so wird das tatsächliche Schreiben der Daten in die Datenbank dem Cache-Management des Betriebssystems übergeben. D.h. es erfolgt kein sofortiges Schreiben der Datenänderungen in die physische Datenbankdatei, sondern dies wird vom Betriebssystem bei Lust und Launa durchgeführt. Wenn wir nun von Windows sprechen, so hatten mal Firebird-Entwickler od. jemand von IBPhoenix (kann ich nicht mehr genau sagen) einen Test durchgeführt, daß auch noch nach <b>Stunden</b> diese Daten noch nicht geschrieben wurden! Ich würde daher wie Torsten bereits erwähnt hat auf den möglichen Performancegewinn bei deaktivierten Forced Writes verzichten und auf Datenintegrität setzen.<br><br>
      Thomas Steinmaurer<br>
      http://www.iblogmanager.co
      Thomas Steinmaurer

      Firebird Foundation Committee Member
      Upscene Productions - Database Tools for Developers
      Mein Blog

      Comment


      • #4
        wenn du forced writes auf true gesetzt hast, dann achte auf jeden Fall auf kontrolle über deine Transaktionen, also nix mit autocommit, was zum Beispiel die BDE sonst macht.

        Gruß

        Holger

        www.h-k.d

        Comment


        • #5
          Ein grosser Nachteil von forced writes=false ist der: Beim Schreiben in die Datenbankdatei bemüht sich Interbase, bei Änderungen, die aus mehreren Schreibaktionen bestehen, eine möglichst günstige/fehlersichere Reihenfolge einzuhalten. Die Idee dabei ist, die Daten in einer Reihenfolge und nach einem Konzept zu schreiben, der die Datenbank fast immer in einem konsistenten oder mindestens reanimierbaren Zustand beläßt, auch wenn mittendrin der Strom weg ist oder so. Diese Versuche werden natürlich zu nichte gemacht, wenn forces writes aus ist, weil dass das Betriebssystem irgendwann mal schreibt, wenn es gerade Lust hat.
          Ich würde also forced writed nur dann ausschalten, wenn es mir (vor allem beim Ändern/Einfügen) mehr auf Geschwindigkeit als auf Sicherheit ankommt.

          Gruss
          Karsten Strobe

          Comment


          • #6
            Hallo Holger - Klemmo,

            mir hat nun jeder empfohlen forced write auf true zu setzen ausser du..

            Ich arbeite mit der BDE und mit AutoCommit, siehst du da groessere probleme auf mich zukommen??

            eine andere frage, gibt es fuer interbase tools um eine
            abgestuertzte DB wieder zu reaktivieren??

            DANKE
            Karl
            ein neuer Interbasler aus der Oracle Eck

            Comment


            • #7
              wenn du so arbeitest (bde-autocommit), dann beachte folgendes Beispiel:

              qry.sql.text:='insert into tabelle values (:x)';
              for i:=1 to 1000 do
              begin
              qry.parambyname('x').AsString:='bla bla';
              qry.execsql;
              end;

              Mit diesem Beispiel startetst du 1000 Transaktion, die jedesmal mit commit automatisch bestätigt werden und bei Forced Writes True auch jedesmal den Cache auf die platte schreibt.

              mit aktiver Transaktionskontrolle dagegen wird zum Beispiel beim execsql einer Query geprüft, ob die zugehörige Transktion schon aktiv ist. Mit aktiviertem Forced Writes wäre diese Variante nur unwesentlich langsamer als die ohne Forced Writes. Die oben geschilderte Variante ist je nach Festplatte mindestens 400 % langsamer.

              qry.sql.text:='insert into tabelle values (:x)';
              qry.database.starttransaction;
              for i:=1 to 1000 do
              begin
              qry.parambyname('x').AsString:='bla bla';
              qry.execsql;
              end;
              qry.database.commit;

              gruß

              Holger

              www.h-k.d

              Comment


              • #8
                Hallo Holger

                DANKE fuer die logische Erklaerung
                Ich habe erfahren, dass Du an einem Buch fuer Interbase arbeitest!!

                Wann kommt denn dieses....

                Gibt es Moeglichkeiten eine corrupted GDB File zu analysieren und zu
                reparieren?

                Kar

                Comment


                • #9
                  Das ursprünglich geplante Buch von Addison Wesley wird (aus verschiedenen Gründen) nicht mehr erscheinen, es wird aber in naher zukunft ein Buch von mir erscheinen.

                  Interessenten können sich über die Gründe per EMail [email protected] bei mir informieren.

                  Gruß

                  Holger

                  www.h-k.d

                  Comment

                  Working...
                  X