Diese Frage ist spezifisch für SQL Server, andere DB-Antworten sind jedoch willkommen.
Lesen Sie unten für einige Geschichte. Meine kurze Frage lautet: Wie garantiert SQL Server, dass "ABCDE" geschrieben wird, wenn ich "ABCDE" in die Datenbank schreiben möchte, nicht "ABECD"? Es wurde vorgeschlagen, die Daten erneut zu lesen und zu vergleichen, um die gleichen Ergebnisse mit der offensichtlichen Leistungseinbuße zu gewährleisten.
Das Unternehmen, für das ich arbeite, bringt für uns ein hochvolumiges Produkt auf den Markt (~ 35.000 Stück pro Tag), für das wir in SQL Server gespeicherte Daten sammeln.
Bei früheren Produkten mit geringerem Volumen wurden Daten lokal in SQL Server Express-Datenbanken in der Leitung gespeichert und dann mithilfe serverübergreifender Transaktionen regelmäßig auf den Server (SQL Server Standard) kopiert. Gelegentlich wurden diese Desktop-Datenbanken beschädigt und mussten häufig wiederhergestellt werden.
Der Prozess unseres neuen Produkts schreibt direkt auf den Server und umgeht den lokalen / Desktop-Speicher.
Unser Management überträgt diese Erfahrung der "Desktop-Korruption" auf das neue Produkt.
Abgesehen von Appellen an die Behörde (Microsoft wäre nicht im Datenbankgeschäft tätig, wenn die Daten nicht korrekt gespeichert würden) oder anekdotischen Erfahrungen als Beweis (in meinen fünf Jahren bei der Verwaltung von SQL Server-Datenbanken wurde noch nie eine Serverdatenbank [Standard / Enterprise]) beschädigt), gibt es eine Microsoft-Dokumentation, die auf SQL Server "Garantien" verweist?
Dies ist eine so grundlegende Wahrheit, die insbesondere bei den Standard-Playern (DB2, Oracle, SQL Server) selten in Frage gestellt wird.
Vielen Dank!
Antworten:
Alle wichtigen SQL-Datenbanken bieten dies. Es wird als ACID-konform bezeichnet . Dies ist wahrscheinlich der Schlüsselbegriff, den Sie in der Dokumentation (und / oder bei Google) nachschlagen müssen.
Wie sie es tun, MS SQL Server ist wie Oracle Closed Source, so dass niemand außerhalb des Unternehmens diese Frage wirklich beantworten kann, aber wie Sie sagen, wenn sie es nicht für große Systeme verwaltet haben, Ihre Produkte würden sehr schnell vom Markt genommen.
quelle
Die Antwort auf diese Frage lautet "nein".
Ich habe gerade die SQL Server 2008-Interna gelesen und das letzte Kapitel in diesem Buch, das Paul Randal über DBCC-Interna geschrieben hat, behandelt die Vielzahl möglicher Beschädigungen, die bei Datenbankseiten auftreten können, die von erkannt werden können
DBCC CHECKDB
.Sie können den Prüfsummenschutz für Ihre Datenseiten, Sicherungen und regelmäßige Überprüfungen auf Beschädigung mit verwenden
DBCC CHECKDB
Ihr Plan, Daten zu schreiben und erneut zu lesen, scheint etwas sinnlos zu sein, denn wenn Sie nicht ständig laufen,
checkpoint
um sicherzustellen, dass alle schmutzigen Seiten auf die Disc geschrieben werden,dbcc dropcleanbuffers
wird Ihnen die Seite wahrscheinlich trotzdem direkt aus dem Speicher übergeben.quelle
Kann mit SQL Server nicht helfen, aber Oracle verfügt über einige Parameter, die zur Überprüfung auf Speicher- oder Festplattenbeschädigung festgelegt werden können, einschließlich DB_BLOCK_CHECKSUM und DB_BLOCK_CHECKING . Am oberen Ende kann Oracle automatisch zu Sicherungen oder einem DR-Speicherort wechseln, um eine "saubere" Kopie des beschädigten Blocks zu erhalten.
Natürlich kann eine RAID-Konfiguration auch zum Schutz vor Festplattenfehlern beitragen. Wie in den Kommentaren erwähnt, entspricht ein Desktop-Computer auf Hardwareebene nicht den gleichen Ausfallsicherheitsstandards wie ein Server.
quelle