Announcement

Collapse
No announcement yet.

Große Datenmengen einfügen (GB)

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

  • #16
    Ich habe mir jetzt mal interessehalber die Tabelle 'Dataset' laut Beschreibung angelegt und dazu einen Textfile mit 10.000.000 (10 Millionen!) Datenzeilen. Der Textfile ist etwa 340 Mb groß und das Bulk Insert damit dauerte 2 Minuten 28 Sekunden.

    Was die Größe betrifft sieht es bei mir so aus:
    Datenbank mit Standardwerten neu angelegt, nurTabelle 'dataset' angelegt und mit diesen 10 Millionen Records befüllt:
    der Datenfile (mdf) braucht 322 Mb
    der Logfile (ldf) belegt 3,55 Gb

    Meine Hardware:
    SQLServer2005 Developer
    4 Gb Ram
    DualCore E6750 (mit 3,2 GHz)
    Velociraptor 320 Gb

    Vielleicht hilft diese Info mal etwas weiter.

    bye,
    Helmut

    Comment


    • #17
      @hwoess
      Das hört sich doch sehr gut an... Könntest Dur mir bitte den Befehl sagen, wie ich den BULK INSERT mache? Dann kann ich mein Programm so umschreiben, dass die Daten erstmal nicht in die DB sonder in ein File kommen und dann per BULK INSERT in die DB. Das wäre phantastisch!!!

      Ach und noch etwas. Gibt es dann auch die Möglichkeit, die Log-Datei kleiner zu halten? Bei der genannten Konfiguration wäre ich ja schon sehr nah an den 4GB...

      So sieht übrigens das Ergebnis der Anweisung aus... (Der vorhergehende Lauf war allerdings recht kurz)

      Code:
      Name		Rows	Rsrvd_KB	Data_KB	IndexSize_KB	Unused_KB
      Dataset		2232000	184144	72888	110736		520
      Variables		185	32	8	24		0
      DLC		31	32	8	24		0
      LoadCase		31	32	8	24		0
      sysdiagrams	0	0	0	0		0
      Zuletzt editiert von tho.jo; 29.04.2009, 10:07.

      Comment


      • #18
        Hallo tho.jo,

        ich habe dir doch in einer der vorigen Antworten den Link zur Beschreibung von BULK INSERT geschickt - wurde anscheinend nicht gelesen, denn das ist so einfach (und außerdem sind sogar Beispiele dabei), dass man da normalerweise nicht fragen muss, wie das geht. Und daher werde ich da auch nichts mehr dazu sagen, sorry.
        Dein Problem wird noch das mit der Größe, schon weil der Transaktionsfile so groß wird (außer du hast die DB im Wiederherstellungsmodus = "einfach" und splittest die Textdatei schon vorher in X kleinere Files und verarbeitest die dann schrittweise). Verstehe aber nicht, dass da kein Geld für eine "normale" Serverversion, die dann keine 4Gb-Begrenzung hat und vielleicht zwei Prozessoren gleichzeitig nutzen kann, da ist (schaut ja nach Firma aus).

        bye,
        Helmut

        Comment


        • #19
          Hallo Helmut, Hallo alle anderen,

          ich habe das mit dem BULK INSERT natürlich auch gleich hinbekommen. Ist ja nicht so schwer. Der Geschwindigkeitsvorteil ist auch sehr gut.
          Ich habe die Express-Version aus dem Grund verwendet, da ich erst einmal sehen möchte, ob eine Datenbank für meine Anwendung überhaupt in Frage kommt. Es ist also in erster Linie ein Experiment.

          Meine Vermutung war, dass die DB die Daten in einer kompateren Form als in Text-Files abelegen kann. Diese Vermutung hat sich nicht bestätigt. Stattdessen benötigt die Datenbank für die gleichen Daten mehr Platz.

          Außerdem hatte ich vermutet, dass ich Abragen auf den Daten, sind sie erstmal in der DB, sehr schnell machen kann. Hauptsächlich statistische Abfragen. Ein SELECT mit 2 INNER JOIN, TOP(10), 2 WHERE, und ORDER BY benötigt jedoch ca. 00:01:22. (Die Dataset Tabelle hatte 51.361.872 Zeilen). Die Verwendung von Formeln habe ich noch nicht getestet. Ich vermute aber mal, dass dies nicht schneller funktioniert sonder eher langsamer.

          Vermutlich würde mein Programm von der Performance besser funktionieren, wenn ich auf die Daten "nur" über das Dateisystem des OS zugreifen würde. Im Augenblick sehe ich also keinen Vorteil durch die Verwendung einer DB...

          Comment


          • #20
            Im Augenblick sehe ich also keinen Vorteil durch die Verwendung einer DB...
            Dem kann man nur vollends zustimmen. Hat sich noch nie ausgezahlt, Daten in eine DB zu legen. Man ist einfach besser dran, die Daten in den Speicher oder in das Filessystem zu legen.

            Auch das Nachprogrammieren von DB-Anweisungen um Daten zu selektieren ist per Hand einfacher und schneller.

            Die Pflege eines Index die Verwaltung von Abbhänigkeiten ist innerhalb des Programmes ebenfalls einfacher und schneller erledigen.

            Und solch neumodischen Schnickschnack wie Hibernate, Toplink. Macht die Arbeit nur einfacher
            Christian

            Comment

            Working...
            X