Ich möchte über die SQL Server-Speicherdatentypen im Speicher informiert werden.
Wie ist der money
-Datentyp in SQL Server im Speicher gespeichert? Ich weiß, dass money
in 8 Bytes und smallmoney
in 4 Bytes gespeichert ist. Aber ich weiß nicht wie?
Zum Beispiel, wenn Sie 123400.93 für das Geld haben, wie ist es in 8 Bytes gespeichert?
Ich habe dieselbe Frage zu den Datentypen decimal
und DATE
.
Speziell für DATE
ist das Format YYYY-MM-DD, aber wie ist es in 3 Bytes gespeichert? Ist es wie hier beschrieben gespeichert: Ссылка
oder wird die Anzahl der Tage ab einem bestimmten Tag gespeichert?
Füg hier einfach ein bisschen hinzu ...
Ein einzelnes byte
besteht aus 8 bits
. A bit
kann 2 Werte (0 oder 1) enthalten.
Also 4 Bytes sind 32 Bits (4 x 8). Das bedeutet, dass der numerische Bereich dessen, was gespeichert werden kann, von 0 bis 2 ^ 32 ist, was einen Gesamtbereich von 4.294.967.296 Werten ergibt.
smallmoney
ist vorzeichenbehaftet, so dass wir eines der für das Zeichen zu verwendenden Bits löschen, was 2 ^ 31 oder 2.147.483.648 mögliche Werte und das +/- Zeichen zurücklässt.
Nun berücksichtigen wir, dass die letzten 4 Ziffern eines Geldtyps immer hinter dem Dezimalpunkt stehen und wir enden mit einer Bandbreite von -214.748,3648 bis 214.748,3647
Technisch werden Geld- und SmallMoney-Werte gespeichert, indem Bits in einem Wort oder Byte wie alles andere umgedreht werden. Wenn Sie weitere Informationen benötigen, lesen Sie Ссылка
Oder Sie sehen das für den möglichen Wertebereich von Geld und Kleingeld: Ссылка
update
Für den Datentyp DATETIME
ist es das gleiche Konzept mit einem kleinen Twist. In MS SQL wird ein DATETIME
mit 2 Nummern gespeichert. Die erste ist die Anzahl der Tage seit dem 1.1.1900 und die zweite ist die Anzahl der Ticks seit Mitternacht:
Sehen
Ссылка und Beim Speichern einer Datetime in SQL-Server (Datetime-Typ ), in welchem Format speichert es es?
Wie sind die Datentypen "money" [...] in SQL Server gespeichert? Speicher?
Wenn Sie sehen möchten, wie ein MONEY-Wert (8 Byte) gespeichert wird, können Sie den folgenden Script-Schritt / Schritt ausführen:
%Vor%Hinweis: Ich habe SQL2008R2 verwendet.
Ich denke, dass Sie dieses interessante finden können Performance- / Speichervergleiche: MONEY vs. DECIMAL
Die Person, die für MONEY argumentierte, zeigte den von MONEY verwendeten Platz verglichen zu derselben Information, die in einer DECIMAL (20,4) -Spalte gespeichert ist. Nicht alle das war überraschenderweise etwas größer. Aber ist das das? ganze Geschichte? Nein, aus zwei Gründen. Einer ist, dass die Leistung von Diese Entscheidungen wurden nicht verglichen, und der andere ist DECIMAL (20,4) keine sehr realistische Anforderung zum Speichern von Währungsdaten. Es sei denn Sie speichern die Preisinformationen für Luxusyachten oder Flugzeuge Träger, in diesem Fall können Sie wahrscheinlich die Dezimalstellen fallen lassen insgesamt und verwenden Sie INT oder BIGINT. Für den Rest von uns eine bessere Wahl wäre DECIMAL (8,2) oder DECIMAL (10,2).
Überprüfen Sie auch diese verwandte Frage: Sollten Sie in SQL Server die Datentypen MONEY oder DECIMAL (x, y) auswählen?
Tags und Links sql memory sql-server