tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
390
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LiL-ScooB LiL-ScooB ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Hallo,

    ich habe da eine kleine Frage zur Performance einer Datenbank

    ich möchte im bereich von 100-200ms Messwerte speichern sind so um die 100 bis 200 Werte

    jetzt bin ich am überlegen was besser von der Performace ist

    eine große Tabelle mit allen werten oder mehre in Gruppen aufgeteilte Tabellen a ca 20-40 Werte oder für jeden Wert eine Tabelle?

    Hat da jemand schon Erfahrung gemacht bei einer solchen Datenmenge?

    Die Datenbank ist noch nicht ausgewählt in Frage kommen SQLite, PostgresSQL, MySQL und MS SQL Server

    Gruß
    ScooB
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Egal welche der Datenbanken du wählst. Bei 200 Einträgen reden wir noch nicht von grossem Datenaufkommen.
    So ab 100'000 kannst du langsam überlegen wie du sie aufteilen willst.

    Das aufsplitten auf mehrere Gruppen-Tabellen macht es bei diesen Datenmengen eher langsamer wenn du Gruppenübergreifende Auswertungen haben willst.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    LiL-ScooB LiL-ScooB ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Danke für die schnelle Antwort aber ich glaube ich habe mich da etwas falsch ausgedrückt

    ich meine nicht 200 Einträge sondern 200 Spalten in einer Tabelle
    es werden jede 200ms bis zu 200 werte für einen Eintrag gespeichert die dann über ca 30 Tage gespeichtert bleiben.
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Also werden pro Sekunde 5 Zeilen mit 200 Feldern geschrieben.
    Also rechnest du mit (60sec*60min*24h*30days*5perSec) 12'960'000 Zeilen. In Worten: Mehr als 12 Millionen Datensätze.

    Da brauchst du als erstes eine kräftige DB. MS SQL oder Oracle.

    Dann gute Indexe und saubere Felddefinitionen.

    Kannst du die Felder normalisieren?

    Ansonsten würd ich es trotzdem zusammen lassen. Joins in Kombination mit Full Table Scans brauchen länger als ein Full Table Scan auf nur eine Tabelle. Wenn du viele Spalten anzeigen möchtest, kommst du am Full Table Scan fast nicht mehr vorbei. Einzig für die Selektionen kannst du da auf einen Index-Scan zurückgreifen
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    LiL-ScooB LiL-ScooB ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Genau sollen dann um die 12 Millionen Datensätze in der DB vorhanden sein.

    Naja normalisieren kann man da nix mehr wird im Prinzip nur nen Zeitstempel und die Werte

    | Zeitstempel | Wert 1 | Wert 2 | Wert 3 | Wert N |

    Kann man in einer Tabelle Spalten reservieren ? z.B. damit ich falls Werte dazukommen die Tabelle erweitern kann?
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du kannst immer Spalten hinzufügen. 'ALTER TABLE' ist da das Stichwort. Also, blos keine leeren Spalten für später mitführen.
    Wieviele Werte sind es denn?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    LiL-ScooB LiL-ScooB ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Ja das ich Spalten hinzufügen kann ist mir bewusst nur wollte ich wissen ob es generell eine möglichkeit der Reservierung gibt.

    Das ergibt sich noch dann wieviele Werte es sind kann sein das ich mit 100 Starte allerdings dann doch mit der Zeit noch 50 oder so hinzufügen muss
    Danke
     

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Klar, du kannst ja einfach Spalten Wert1 bis Wertn, wobei n die maximale Spaltenzahl der DB ist, machen.
    Je mehr Dummy-Spalten du mitführst, umso schlechter für die Performance. möglichst schlank halten und dann erweitern, wenn es notwendig wird.
    ggf. Solltest du die Tabelle sogar normalisieren. Ich kann aber nicht sagen ob es bei diesen Datenmengen gut oder Schlecht für die Performance ist.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Design für große und kleine Auflösungen
    Von ZodiacXP im Forum CSS
    Antworten: 7
    Letzter Beitrag: 18.07.11, 16:49
  2. Brauche eine (kleine - mittlerweile große) Denkhilfe bei meiner Query
    Von fristan im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 15.04.08, 14:39
  3. große und/oder kleine Objekte
    Von Spamjam im Forum Cinema 4D
    Antworten: 0
    Letzter Beitrag: 21.06.07, 19:34
  4. Kleine Performance Frage
    Von SantaCruze im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 04.03.07, 15:48
  5. Antworten: 3
    Letzter Beitrag: 28.02.02, 14:17