Ich versuche, den Speicherplatzbedarf für einen zentralen Datenbankserver abzuschätzen, der Daten aus etwa 200 identischen Felddatenbanken sammelt. Ich habe die durchschnittliche tägliche Zeilenanzahl für jede Tabelle und muss jetzt die Zeilengröße einschließlich der Indizes für jede Tabelle schätzen.
Gibt es so ein Tier oder muss ich mein eigenes rollen? Können Sie mir einen guten Ansatz vorschlagen, wenn ich meinen eigenen rollen muss?
TIA
sql-server
Metapher
quelle
quelle
Antworten:
Unter Verwendung von Aarons Link für eine noch feinere Anpassung meines Prozesses würde ich eine Funktion und eine Ansicht / Abfrage empfehlen, um die Größe pro Zeile und Tabelle einschließlich der Indizes anzugeben.
quelle
Als Antwort ausgewähltes Skript hat einige Nachteile:
Berücksichtigt einige SQL Server-Datentypen nicht:
Bild, Text, eindeutige Kennung, sql_variant, ntext, hierarchyid, Geometrie, Geografie, XML, Systemname
und (max) Datenstrukturstrukturen wie varchar (max), um nur einige zu nennen.
Das folgende Skript zeigt die Größe des Datensatzes auf einer Datenseite. Es zeigt die maximale Größe, die vom Datensatz angenommen werden kann, die minimale Größe (falls einer alle Werte im Datensatz NULL sind, wenn dies durch die Tabellenstruktur zulässig ist). Es zeigt den Tabellentyp (CLUSTERED / NONCLUSTERED), die Gesamtzahl der Datenspalten und das Schema, zu dem die Tabelle gehört.
Beachten Sie, dass dieses Skript keine Indizes berücksichtigt.
Update: Das Skript zählt jede Bitspalte als 1/8 eines Bytes. Die minimalen und maximalen Größen werden angepasst, um sicherzustellen, dass die Datensätze nicht kleiner als die Größe des Weiterleitungsstubs sein dürfen .
quelle
CEILING()
beides tunSUM(...) AS [Max Size]
undSUM(...) AS [Min Size]
gebrochene BIT-Werte berücksichtigen (wenn die Anzahl der BIT-Felder nicht gleichmäßig durch 8 teilbar ist), da ein einzelnes BIT-Feld immer noch 1 Byte belegt. Auch irgendwelche Gedanken zur Berücksichtigung von: SPARSE, vardecimal und Komprimierung? Mir ist klar, dass es ziemlich kompliziert wäre, diese zu bearbeiten, aber ich bin gespannt, ob Annäherungen zumindest im Fall von SPARSE verwendet werden könnten, vielleicht auch vardezimal (veraltet, aber auch TEXT, IMAGE usw. :)VARDECIMAL
ein Datentyp ist. Ich habe gesagt, dass dies zusammen mit der Option SPARSE und COMPRESSION die physische Speichergröße vieler Datentypen beeinflusst, die Sie korrekt berücksichtigen. Das heißt, einBIGINT
Feld, das alsSPARSE NULL
0 Byte oder 12 Byte markiert ist , nicht "immer 8 Byte". Es würde also eine Schätzung der Anzahl der Zeilen erfordern und wie viele davon NULL gegen NICHT NULL wären. Vielleicht ist es gut genug, weiterhin "immer 8" anzunehmen.