PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PostgreSQL: Wie Daten-Integrität prüfen?



nobody0
27-05-2006, 18:10
Nach einem Stromausfall oder bei defektwerdendem RAM ist es ja möglich, dass die Daten nicht mehr den bei der Tabellendefinition vorgegebenen Checks entsprechen, also beispielsweise ein Zahlenwert größer als das für die betreffende Spalte vorgegebene Limit ist.
Wie kann man das überprüfen? :confused:

mwanaheri
28-05-2006, 21:09
Nun, einen zu großen Wert könntest du eventuell finden, indem du die Tabelle in eine Kopie der Tabelle selektierst. Allerdings schützt dich das nur vor solchen offen falschen Werten und garantiert nicht, dass die anderen Werte noch die sind, die sie vorher waren. Abschätzen könntest du das eventuell durch einen Vergleich mit der letzten Sicherung.

Christoph
29-05-2006, 08:29
PostgreSQl ist ACID-compliant und das bedeutet, dass die Datenintegrität auch nach einem Stromausfall gesichert bleibt. Anders als z.B. bei MySQL ist eine solche Überprüfung also nicht nötig.

Das schlimmste was Dir bei PostgreSQl passieren kann ist, dass einzelne Transaktionen (als ganze) nicht geschrieben wurden wenn der Strom ausfiel. Die Datenintegrität wird aber nicht verletzt.

mwanaheri
29-05-2006, 14:18
Wenn du das so sagst, vertraue ich mal darauf und bin selbst auch beruhigt ;-)

nobody0
29-05-2006, 15:40
Ok, mit Journalising und anderen Methoden kann ein Stromausfall wohl nichts kaputt machen, zumindest wenn einfach nur schnell der Strom weg ist, aber was ist, wenn z. B. im RAM oder auf der Platte ein paar Bits kippen? :confused:
Vermutlich hilft da nur die Datenbank komplett auszulesen und alles zu checken, oder?
PostgreSQL wird ein paar gekippte Bits ja wohl nicht verändern und nur beim Einlesen der Daten checken, oder?

Christoph
30-05-2006, 10:09
Ok, mit Journalising und anderen Methoden kann ein Stromausfall wohl nichts kaputt machen, zumindest wenn einfach nur schnell der Strom weg ist, aber was ist, wenn z. B. im RAM oder auf der Platte ein paar Bits kippen?

Klar, zum Schutz vor Hardwareausfällen hilft natürlich nur ein Backup (oder im Falle von großen Datenbanken wohl sinnvoller: eine Spiegelung).

elrond
31-05-2006, 07:48
beschäftige dich mal mit dem postgresql-tool analyze. damit sollte es möglich sein inkonsistenzen aufzuspühren und zu bereinigen

Christoph
31-05-2006, 09:53
beschäftige dich mal mit dem postgresql-tool analyze. damit sollte es möglich sein inkonsistenzen aufzuspühren und zu bereinigen
Ist ANALYZE nicht dazu da, Statistiken für den Query-Optimizer zu erstellen?

elrond
31-05-2006, 09:59
jepp, isses...ich glaube aber gehört zu haben dass man dabei implizit eine konsistenzprüfung läuft (sorry, ich bin normalerweise nicht so vage :o ), könnte aber genausogut reindex gewesen sein

ich war ende letzten jahres zu pg-schulung, bei der deutsche pg-entwickler doziert haben empfehlenswert... (http://www.linuxhotel.de/kurs/postgresql/index.html)