Bei Brent Ozar gibt's eine nette Einführung zum Thema "Datenspeicherung im SQL Server" - inklusive eines halbstündigen Videos. Hier ein paar erinnerungswürdige Punkte:
- die kleinste Speichereinheit im SQL Server sind die pages einer Größe von 8K: sie entsprechen also den Blocks in Oracle.
- mit dem Befehl: DBCC IND kann man sich die pages anzeigen lassen, die zu einer Tabelle gehören.
- mit DBCC PAGE lässt sich ein Dump mit den Details zu den Inhalten der page erzeugen: das Ergebnis entspricht ziemlich genau einem Block Dump in Oracle.
- ebenfalls wie im Fall von Oracle kann man die Datendateien einer (geschlossenen) Datenbank per Hex-Editor öffnen und darin die unverschlüsselten Strings lesen und (abhängig von der gewählten Einstellung für Page Verify) sogar ändern (was ein guter Grund für die Verwendung von database encryption sein kann).
- Datenänderungen werden (wie bei Oracle) im Cache durchgeführt. Die Persistierung erfolgt asynchron (beim nächsten Checkpoint).
- die Inhalte des transaction log können mit Hilfe der table function fn_dblog angezeigt werden.
Nachdem ich zuletzt eher die Unterschiede zwischen Oracle und dem SQL Server im Bereich der Lesekonsistenz und der Isolation Levels betont habe, gibt's bei den hier angesprochenen Punkten eine recht große Ähnlichkeit der Konzepte - wobei die Speicherung auf Block-Ebene im Fall von Oracle wohl sehr viel komplizierter ist (ITLs + Verweise auf Undo-Segmente), da sie die Grundlage der erwähnten Versioning-Mechanismen ist.
Keine Kommentare:
Kommentar veröffentlichen