none
Ab wie vielen Datensätzen wird SQL Server "langsam" RRS feed

  • Frage

  • Hallo zusammen,

    ich speichere Messwerte in einer Tabelle mi Hilfe des SQL Server Express 2012 ab. Im Moment speichere ich pro Messung 10000 Werte in der Tabelle. Pro Jahr will ich eine Tabelle erzeugen. Nun ist es aber leider so, dass pro Jahr ca 60000 Messungen durchgeführt werden, was bedeutet, dass in einer Tabelle dann 600 Millionen Messwerte stehen würden. 

    Ist es möglich diese alle in einer Tabelle zu speichern und wird das suchen von Messungen bei so vielen Datensätzen merklich langsamer?

    Kennt sich jemand damit aus?


    • Bearbeitet MaRo0007 Dienstag, 30. Juni 2015 10:17
    Dienstag, 30. Juni 2015 09:59

Antworten

  • Hallo,

    der SQL Server skaliert sehr gut und es ist problemlos möglich, in einer Tabelle mehrere 100 Millionen Datensätze zu haben; wir hatten für Tests schon mal 4 Milliarden Datensätze und es gab kein Performance Problem.

    Problem bei Dir dürfte eher werden, das Du die Express Edition verwendest, die ist von der Ressourcen-Nutzung her eingeschränkt: max. 1 CPU und 1 GB Ram. Dann gibt es noch eine weitere Einschränkung, die Dich besonders betreffen wird: Nehmen wir man an, ein Datensatz hat die durchschnittliche Größe von 20 Bytes, was nicht viel ist. Bei 600 Mio Datensätze wären das 12 GB Rohdaten ohne Indizes; die max. Datenbankgröße der Express Edition ist 10 GB.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]


    Dienstag, 30. Juni 2015 10:20
  • Hallo,
    um die Suche in vielen Datensätzen schnell durchführen zu können, kannst du auf die Suchspalten einen Index legen. Damit macht die Execution Engine des SQL Servers nur einen Index Scan und keinen Full Table Scan mehr. Das ist in der Regel deutlich schneller. Dafür weden Inserts und Updates etwas langsamer. Zudem verbraucht, wie es Olaf richtig beschrieben hat, jeder Index zusätzlichen Speicherplatz.

    Wobei es beim suchen immer darauf ankommt wie man sucht. Ein Index ist nicht automatisch ein Garant für eine schnelle suche!


    Viele Grüße Holger M. Rößler


    Dienstag, 30. Juni 2015 10:49

Alle Antworten

  • Hallo,

    der SQL Server skaliert sehr gut und es ist problemlos möglich, in einer Tabelle mehrere 100 Millionen Datensätze zu haben; wir hatten für Tests schon mal 4 Milliarden Datensätze und es gab kein Performance Problem.

    Problem bei Dir dürfte eher werden, das Du die Express Edition verwendest, die ist von der Ressourcen-Nutzung her eingeschränkt: max. 1 CPU und 1 GB Ram. Dann gibt es noch eine weitere Einschränkung, die Dich besonders betreffen wird: Nehmen wir man an, ein Datensatz hat die durchschnittliche Größe von 20 Bytes, was nicht viel ist. Bei 600 Mio Datensätze wären das 12 GB Rohdaten ohne Indizes; die max. Datenbankgröße der Express Edition ist 10 GB.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]


    Dienstag, 30. Juni 2015 10:20
  • Hallo,
    um die Suche in vielen Datensätzen schnell durchführen zu können, kannst du auf die Suchspalten einen Index legen. Damit macht die Execution Engine des SQL Servers nur einen Index Scan und keinen Full Table Scan mehr. Das ist in der Regel deutlich schneller. Dafür weden Inserts und Updates etwas langsamer. Zudem verbraucht, wie es Olaf richtig beschrieben hat, jeder Index zusätzlichen Speicherplatz.

    Wobei es beim suchen immer darauf ankommt wie man sucht. Ein Index ist nicht automatisch ein Garant für eine schnelle suche!


    Viele Grüße Holger M. Rößler


    Dienstag, 30. Juni 2015 10:49