AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird und Geschwindigkeit mit SSD

Firebird und Geschwindigkeit mit SSD

Ein Thema von Dumpfbacke · begonnen am 23. Feb 2011 · letzter Beitrag vom 7. Apr 2011
Antwort Antwort
Seite 2 von 3     12 3   
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#11

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 09:27
Zitat:
Wenn du bei dem Script die DB auf unterschiedliche Datenträger legst, dann wirst du die Unterschiede sehen. Gewinner bei mir war eine RAM Disk, danach kam dann die SSD, danach dann eine normale Festplatte. Wenn du aber ausreichend Speicher hast und die cache buffers groß genug sind und du am besten auch noch die 64 Bit Firebird Version nimmst, dann kann auch eine 10GB DB komplett im RAM betrieben werden (http://www.firebirdsql.org/rlsnotesh...gine-cachesize). Das ist aber kein Limit, wenn du 100GB physikalisch hast dann kannst du auch das komplett mit FB25x64 für Firebird benutzen.
Da habe ich doch eine Frage. Wenn die Daten im RAM liegen und es zu einem Stromausfall kommt sind die Daten doch weg?
Ist zwar aus meiner Sicht schnell aber auch ein erhöhtest Risiko.
Oder habe ich da was übersehen?

Gruß BORWIN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.098 Beiträge
 
Delphi 12 Athens
 
#12

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 09:33
Ja, was im RAM liegt ist dann weg ... genauso natürlich auch eine RAMDisk.

Darum wird ein ordentlicher Server ja auch mit Notstrom versorgt und hatt dann genügend Zeit um den Stromausfall zu überbrücken oder um in Ruhe alles zu sichern (ordentlich Runterfahren oder Ruhezustand).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Feb 2011 um 09:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 10:21
Firebird bietet dir da noch eine ergänzende Alternative, das Shadow.
Du kannst nämlich zum Beispiel eine DB auf einer Ramdisk betreiben und das
zugehörige Shadow auf einer physikalischen Platte.

Der Vorteil ist dabei dass in der DB auf der Ramdisk alle Lese und Schreibvorgänge
stattfinden, auf dem Shadow aber nur die Schreibvorgänge, die dadurch zwar ein
wenig an Performance verlieren. Außerdem musst du beim hochfahren des Servers
erst mal vom Shadow die neue DB in die Ramdisk kopieren, um dann von dort das
Shadow neu zu erzeugen.

Leseintensive Anwendungen können dadurch schon einiges gewinnen, aber wenn die
komplette db eh im Cache ist bringt das keine Vorteile. Daher am besten fb25x64
mit ordentlich RAM und einen schnellen Datenträger, ob schnelle SSD oder lieber
schnelle HDD ist dann Geschmackssache und persönliche Risikoeinschätzung.

Wichtig bei forced writes ist in erster Linie die Schreibreihenfolge, weil nur
dabei immer eine als Datenbank benutzbare konsistente Datei auf dem Datenträger
bleibt. Bei forced writes off schreibt windows selbst in der Reihenfolge wie es das
für sinnvoll hält und das hinterlässt im Fehlerfall durchaus mal Müll auf der Platte.

USV hilft ja auch nur in Ausnahmefällen, beim Bluescreen bleibt der halt noch länger
sichtbar, aber ob der Speicherinhalt es noch auf die Festplatte schafft, hängt von
vielen Faktoren ab.

Ich finde zwar auch das Hardware mittlerweile recht stabil ist, aber im Worst Case
hilft einem das auch nicht weiter.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 15:23
Firebird bietet dir da noch eine ergänzende Alternative, das Shadow.
Du kannst nämlich zum Beispiel eine DB auf einer Ramdisk betreiben und das
zugehörige Shadow auf einer physikalischen Platte.
Das ist sicher der beste Weg, wenn man mit RAM Disk arbeitet.
Wenn mann es richtig schnell braucht, DB im Ramdisk und Shadow auf einer SSD-Platte.
Da hat man maximale Geschwindigkeit und optimale Sicherheit. Der etwas Mehraufwand beim Starten des
Servers (Shadow von SSD-Platte in den RAM übertragen) spielt da keine Rolle.



Gruß Borwin
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 17:29
...Da hat man maximale Geschwindigkeit und optimale Sicherheit...
Von wegen Sicherheit. Die Ram-Disk kann man ja direkt den Hasen geben. Das Shadow auf SSD oder umgekehrt. Noch nie erlebt, dass auf USB-Sticks Daten nicht richtig geschrieben waren ? Dafür gibts ja sogar "Hardware sicher entfernen". Das Shadow dient ja eigentlich dazu, selbst bei defekter Festplatte noch eine Sicherungskopie auf anderer Platte zu haben. Und diese Kopie noch dazu automatisch verwaltet wird und den Zustand der DB zum Zeitpunkt des Crashs spiegelt. Und das bei vielleicht messbarem aber kaum merkbarem Geschwindigkeitsverlust. RAM-Disk und SSD sind in punkto Sicherheit IMHO Wackelkandidaten. Mir wärs jedenfalls viel zu riskant.

Einen kleinen Nachteil hat das Shadow allerdings doch : wenn ich mich nicht irre, dann geht das nur mit einem Rechner, das darf also kein Netzlaufwerk sein. Externe Festplatte mit USB 3.0 dürfte dann wohl das beste sein. Oder ist das vielleicht seit FB 2.5 anders ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 21:41
Einen kleinen Nachteil hat das Shadow allerdings doch : wenn ich mich nicht irre, dann geht das nur mit einem Rechner, das darf also kein Netzlaufwerk sein. Externe Festplatte mit USB 3.0 dürfte dann wohl das beste sein. Oder ist das vielleicht seit FB 2.5 anders ?
ja, das geht bei aktuellen FB Versionen mit Windows nur auf einer lokalen physikalischen Platte, da aber egal ob an SATA, SCSI, USB o.ä. Über ein Netzwekkabel würde ich das aber auch nicht unbedingt machen (geht bei Linux schon länger, ich meinte auch was zu fb25 oder fb3 gelesen zuhaben, das das dann ggf auch unter windows via netzwerk geht, bin mir da aber nicht sicher).

Mit ist aber e-Sata sympatischer, weil schon länger verfügbar und auch heute schon 08/15 Technik, trotzdem fast genauso schnell wie USB3. Ein E-SATA Leergehäuse kostet keine 30 Euro, ein Controller mit externem Anschluß oder Kabel zum internen auch nicht mehr, 08/15 s-sata platte rein (lieber klein und schnell als groß und lahm) und schon hat man eine recht gute absicherung, auch wenn die eigene DB auf der internen Platte ohne RAM Disk läuft. So kann man auch mal ein Worst case Szenario durchspielen, nämlich zum Beispiel Mainboardausfall auf dem Server.

Wie lange braucht man um unter der gleichen IP wieder eine Kiste am laufen zu haben mit dem letzten Stand der DB?

Das kann bei Backup-Restore und vorher auf band suchen wo was zum restoren hat, ganz schön lange dauern, je nach Datenbankgröße auch mal diverse Stunden. Das wir das bei Kunden auch via Replikation live machen ist eine andere Baustelle, erspart viel Heckmeck bei Mission Critical Anwendungen, die mal nicht eben eine Stunde stehen können.

Replikation ist nicht im Lieferumfang von FB, lässt sich aber mit vergleichsweise wenig Aufwand mit internen Objekten realisieren, wenn das DB Modell den prinzipiell dafür geeignet ist. Das bekommt man aber als OneWay Replikation eigentlich immer hin (Master Slave Replikation). Wenn das DB Modell passt ist aber auch eine Multimaster Replikation im Online/Offline Betrieb realisierbar, haben wir mehrfach für Kunden gemacht. Das eignet sich das nicht nur als Ausfallsicherheit, sondern auch für Skalierbarkeit.

Beim Betrieb einer DB via Netzwerk erhöht sich die Wahrscheinlichkeit von Schreibfehlern erheblich. Wenn die internen Platten nicht reichen, dann würde ich schon eher ein SAN anschliessen und fertig. Da kann im fehlerfall auch gleich ein anderer Server auf das gleich Volume ohne hin und her kopieren. So was kann leider ziemlich teuer sein, bringt aber teilweise irre Performance (setzt ein Kunde in einer süddeutschen Uniklinik mit fb21 ein, lesen und schreiben ging mit je ca. 1GB pro Sekunde, das war schon ein Feeling wie in der RAMdisk, aber im Vergleich dazu wesentlich sicherer, weil weiß ich wie oft intern gespiegelt. Soweit ich gehört hatte, war das wohl aber auch preislich irgendwo im Breich mit 6 Stellen vor dem Komma nicht für jeden geeignet. Das SAN verhält sich intern aber wie eine physikalische Platte, hat daher weder mit DB noch mit Shadow Probleme.

Beim Netzwerk hast du auch schnell mal den Draht voll, weil das Kabel im Gegensatz zu SATA von allen Netzwerkclients gemeinsam benutzt wird, um da auch nur annähernd auf SATA Speed zu kommen (300MB pro sekunde theoretisch, mit schnellen Platten bzw SSD auch problemlos zu 50-75% erreichbar). Das muß schon ein dicker Draht sein, Gigabit reicht da nicht annähernd aus. Daher arbeiten SAN Systeme meistens auch mit eigenen Protokollen und eigener Hardware.

Ich stimme aber Hansa zu, ich würde bei einer SSD als einzigem physikalischen Datenräger für das Shadow der Ramdisk DB auch nicht so wirklich ruhig schlafen, gebranntes Kind scheut das Feuer. Ein Crash kann zwar auch mit einer normalen Festplatte passieren, aber in den letzten 5 Jahren hatte ich bisher nur mit SSD unvorhersehbare Totalausfälle, HDDs haben sich da immer irgendwie zickig gezeigt, seltsame Geräusche von sich gegeben oder waren ruckelig, so das man noch mal eben den Kram zumindest noch ein mal absichern konnte. Auch die SMART Infos sollte man nicht ignorieren.

Auf der SSD jedoch war in beiden Fällen gar nichts mehr, das hat in einem Fall auch der SSD Hersteller untersucht, weil der sich nicht erklären konnte, wie die SMART Daten der SSD aus meinem letzten Test vor dem Crash zustande kamen. Der Hersteller hat auf jeden Fall von deutlicher Überlastung gesprochen, außerhalb der Spezifikation liegende zu hohe Frequenz von Schreibvorgängen. Die SSD war auch eine MLC, evtl. hätte eine SLC das überlebt, aber mit Produktivdaten werde ich das nicht ausprobieren ohne Plan B. Und ohne produktiv entstandene Schreiblast über mehrere Monate bekommt man kein wirklich relevantes Ergebnis, Benchmark hin oder her.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#17

AW: Firebird und Geschwindigkeit mit SSD

  Alt 2. Mär 2011, 17:58
Noch nie erlebt, dass auf USB-Sticks Daten nicht richtig geschrieben waren ? Dafür gibts ja sogar "Hardware sicher entfernen".
Das hat aber eher mit dem Schreibpuffer und Plug'n'Play zu tun ... aber schon eine statische Entladung reicht manchmal, um einen USB-Stick zu entschärfen.
Man weiß nie genau, wie es in der SSD wirklich aussieht und was der Controller so treibt
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

AW: Firebird und Geschwindigkeit mit SSD

  Alt 7. Apr 2011, 13:25
Hallo Leute,
ich muss leider noch mal nachfragen, da ich es einfach nicht hinbekomme.

Ich habe schon geändert:
Einen RamDisk mit 1 GB angelegt Laufwerk R:

Umgebungsvariabele : FIREBIRD_LCK R:\Temp

Dann in der Firbird Conf

TempDirectories = R:\Temp 200000000;D:\Temp
DefaultDbCachePages = 10240
RemoteServicePort = 3051

#CpuAffinityMask = 1 habe ich nicht geändert, da ja die Version 2.5 mit mehr als einem Proz können soll

Firebird läuft als Dienst

C:\Programme\Firebird\Firebird_2_5\bin\fb_inet_ser ver.exe -s DefaultInstance -m

Die DB habe ich auf die RAMDisk gelegt und nun das Ergenis. Auf Festplatte dauert es ca. 33 Minuten und auf der RAM Disk 30 Minuten. Ich dachte so wie Ihr es mir beschrieben habt das hier nun die Kuh fliegt, jedoch 3 Minuten schneller ?
Das ganze geht auch nur so schnell, da keine neuen Daten vorhanden sind wenn dann noch Daten geändert oder neue hinzugefügt werden dauert es locker 3 Stunden.

Ich habe eine Datei mit ca. 5 Milionen Daten aus welche ich 178404 herausfiltere und diese dann mit den Daten in der DB vergleicht und ggf. Update mitteles einer StoredProcedure.

Könnt Ihr mir hier bitte noch mal helfen ?

Daten zu meinem System:
Dell Server, 8GB Hauptspeicher, 2 Intex Xeon 3.20 GHZ Prozessoren. Das Programm lauft in einer Terminalsitzung auf dem selben Server und greift per TCIP zu .

Danke Dumpfbacke
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.098 Beiträge
 
Delphi 12 Athens
 
#19

AW: Firebird und Geschwindigkeit mit SSD

  Alt 7. Apr 2011, 13:30
Wenn/falls der DB-Server so schlau war und die entsprechende Tabelle in der Zwischenzeit in seine Cache (ebenfalls im RAM) geladen hatte, dann treten beim Lesen keine/kaum noch Dateizugriffe auf, was dann also keinen großen Unterschied zwischen SSD und normaler HDD ausmacht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.605 Beiträge
 
#20

AW: Firebird und Geschwindigkeit mit SSD

  Alt 7. Apr 2011, 13:32
File I/O ist bei Dir nicht der Flaschenhals. Es hilft übrigens nahezu nie, die Datenbank lediglich auf eine schnellere Platte zu legen. Die Datenbanken selber optimieren schon selber so gut, dass die ganzen Indices über die die Abfragen laufen eh schon in Memory gecached liegen. Die Tabellen auf denen viel gearbeitet wird liegen dazu auch meist komplett in Memory. Eben um den potentiellen Flaschenhals File I/O von vorneherein auszuschliessen. Das heisst Du hast etwas wegoptimiert, was die Datenbank schon von sich aus wegoptimiert
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz