Announcement

Collapse
No announcement yet.

MS-SQL Datenbank zu gross...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS-SQL Datenbank zu gross...

    Hallo,

    Ich möchte mein Datenvolumen in MS-SQL verkleinern, welche mit fast über 8 Millionen Datensätzen 2,7 GB reserviert.

    Unter der Option 'verkleinern->Datenbank' habe ich (ohne die Einstellung ...'reorganisieren'...) die Datenbank nur auf ganze 2,6 GB bekommen.

    Was wird da alles abgespeichert? Das können doch nicht alles freier Speicher oder Zusätze wie Objekte und Strukturen sein, oder?

    Ich habe die tatsächliche Größe mit der Erstellung eines Backups (Transaktionslog) geprüft und erhalte nur ca. 600 MB. Da fehlen rund 2 GB. was wurde da gemacht?

    Ich habe dann die Option 'verkleinern->Dateien' entdeckt. Jedoch wird dort ausdrücklich gewarnt, dass dann durch die Freigabe des nicht belegten Speicherplatzes die zukünftige Performance leiden kann.

    Habt ihr einen Vorschlag, wie man dieses Problem angehen kann?

    Danke für die Antworten, Gruss

  • #2
    Gibt's einen bestimmten Grund warum Du den Speicher freigegen möchtest? 2,7Gb ist ja jetzt nicht wirklich viel.
    Lass die DB doch den Speicher so verwalten wie sie es möchte, irgendwann wurde der mal angefordert und verwendet und wird es vielleicht auch wieder.

    Comment


    • #3
      naja, ich würde halt gerne wissen, was mit diesen 2 GB passiert, wenn tatsächlich nur ca. 600 MB an Daten existieren?

      Was wird denn da noch gehalten ausser freien Speicher? Irgendwelche Objekte, Strukturen oder Zusatzinformationen ? Wie kann ich das verstehen oder jemandem anderes erklären?

      Comment


      • #4
        Backups sind AFAIK komprimiert. Kannst also nicht 1:1 mit der DB-Größe vergleichen. Wie groß ist die DB nach einem restore unter anderem DB-Namen?

        Comment


        • #5
          Backups sind AFAIK komprimiert
          Njein. Ab MS SQL 2008 kann man in der Enterprise Edition Sicherungen komprimieren lassen. Sonst werden die Datenbankdateien als solche unkomprimiert gesichert, lediglich vom Transaktionsprotokoll werden auch nur der benötigte Teil gesichert, und nach Aussage von xcoder hat er "nur"
          Backups (Transaktionslog)
          eben diese gesichert.

          Die Größe einer DB insgesamt kann von vielem abhängen, so kann man auch eine feste Mindestgröße für Daten und Transaktionsprotokoll-Dateien definieren.

          Führe mal ein
          EXEC sp_spaceused

          es zeigt Dir den Platzbedarf für Daten + Index an und was insgesamt reserviert wurde.
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment


          • #6
            Danke,

            ich habe es gleich mal ausprobiert:
            Code:
            Database_name: pto
            Database_size: 2633.130 MB
            unallocated_space: 0.410 MB
            
            reserved: 657,880 MB
            Data: 382,440 MB
            index_size: 274,632 MB
            unused: 0,808 MB
            Aber warum 2,63 GB ??? Was passiert da?
            Zuletzt editiert von xcoder; 12.05.2009, 12:22.

            Comment


            • #7
              database_size gibt Dir die Gesamtgröße über alle Files an, also Daten un LOG; sind 2,6 GB.

              reserved ist die für Daten + index reservierte Größe + unused; sind 657 MB

              => 2 GB fürs LOG file.

              Führ mal

              DBCC SqlPerf(LogSpace)

              aus, das wird es Dir anzeigen-
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment


              • #8
                aha, und wozu sind die logs da? werden darin wirklich nur statistiken gespeichert?

                database_name;size;Log space used; Status (alle in MB)

                master; 1,242188; 41,19497 ; 0

                tempdb; 0,4921875; 47,02381; 0

                model; 0,9921875; 46,8504; 0

                msdb; 1,992188; 33,72549; 0

                ReportServer; 0,8046875; 46,4199; 0

                ReportServerTempDB; 0,8046875; 36,46844; 0

                pto; 1990,242; 2,221213; 0
                Zuletzt editiert von xcoder; 12.05.2009, 13:34.

                Comment


                • #9
                  Habe gerade einen interessanten Artikel gefunden:
                  http://support.microsoft.com/kb/873235/de

                  Die Fragen haben sich erübrigt. Aber nun verstehe ich folgendes nicht:
                  Wenn die Transaktionslog alles speichert, was jemals an Änderungen der Datenbank geschah, so wurden doch sicherlich auch meine ganzen Zwischenversuche mitprotokolliert, oder?

                  Der angebliche inaktive Teil in der log sollen bereits alle abgeschlossenen Transaktionen sein. Was sind dann aber die restlichen? unabgeschlossene Transaktionen? etwa die, welche durch Syntaxfehler protokolliert aber nicht ausgeführt wurden?

                  Und die Sicherungskopie als Transaktionslog ist also nicht die Datenbank an sich, sondern sozusagen nur ein SQL-Dump, richtig?

                  Ich würde einfach gern ein Transaktionslog erstellen, das Redundante Informationen filtert und lediglich das Datenmodell sowie das Anlegen
                  ihrer gesamten Daten verzeichnet.

                  Bin ich da mit meinen Vermutungen richtig, wie kann ich das bewerkstelligen?

                  Danke vielmals (hab mich noch nicht bedankt) und Gruss

                  Comment


                  • #10
                    muss mich nochmal korrigieren, denn ich vermute mal, dass mein erstelltes Transaktionslog bereits das ist, was ich haben wollte.
                    Sonst wäre ja meine log genauso groß wie in der oben aufgeführten Angabe des Transaktionslogs mit ca. 1,99 GB, richtig?

                    Comment


                    • #11
                      pto; 1990,242

                      Na, da sind Deine gesuchten 2 GB.

                      LOG ist nur eine allgemein-gängige Abkürzung fürs Transaktionsprotokoll.
                      Da werden je nach Wiederherstellungsmodel alle Transaktionen / Datenänderungen mitprotokolliert.
                      Olaf Helper

                      <Blog> <Xing>
                      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                      Comment


                      • #12
                        Super, ich danke Euch allen für die Hilfe. Einen schönen Tag wünsch ich noch.

                        Gruss...

                        Comment

                        Working...
                        X