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 1 von 3  1 23   
Dumpfbacke

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

Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 11:03
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBExpert
Hallo Leute,
ich habe hier http://www.firebirdnews.org/?paged=6 einen Interesanten Beitag gesehen.

Delphi-Quellcode:
# Intel Core i7 930 2.93 @ 4.0 Ghz
# 6GB DDR3 1600 Cas 7
# Mobo Gigabyte x58-UD3R
# Professional 64-bit Windows 7
# Firebird 2.1.3

2. Hard Drives :
a. Western Digital 1TB 64MB Cache Sata III Black
b. Crucial 128GB RealSSD C300

The test consisted in the creation of a database with 1 table :

    CREATE TABLE COR_PRUEBA (
    INTEGER INTEGER NOT NULL,
    CHARACTER CHAR (20),
    CARACTER2 CHAR (10),
    “DOUBLE” DECIMAL (15, 2),
    INTEGER1 INTEGER);
    ALTER TABLE COR_PRUEBA
    PK_COR_PRUEBA ADD CONSTRAINT PRIMARY KEY (INT);

The test is done with the IBExpert 2009.08.19 and consisted of the insertion of 500,000 records (Insert operations) with random data.
Results:

Disc A (HDD): 1hr 11m 40s 43ms
Disc B (SSD): 3m 42s 224ms

What really stunned me was the Big difference and both tests were performed with exactly the same parameters.
Judge yourself whether it is worth mounting a SSD for storage xD.
Hat dieses schon mal jemand von Euch versucht ?
Wenn ja dann
1.) Sind die SSD wirklich so schnell ?
2.) Genügt es das Database File auf die SSD zu legen oder muß ich dann das Windows + den Firebird auch darauf installien ?

Ich muß hier jede Woche ca. 800 MB Excel Daten mit den Firebird Daten vergleichenund updaten.

Danke Dunpfbacke
Tanja
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 11:07
Firebird habe ich noch nicht getestet, aber bei Forced Writes dürfte das schon schneller sein. Aber mehr als eine Stunde bei 500k Datensätzen?!
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 11:16
Firebird ist erfahrungsgemäß bei "langsamen" Medien nicht ganz so flott. Liegt aber nicht an der DB-Engine, sondern daran, dass sie nicht schnell genug Daten geliefert bekommt. Sieht man u.a. daran, dass der Prozessor die ganze Zeit vor sich dümpelt und nichts zu tun bekommt, obwohl die Platte rödelt wie Weltmeister.

Wenn Du die regelmässige Arbeit alleine machst und Dein Rechner genügend RAM hat, dann gibt es glaube ich noch eine andere Option. Installiere eine RAM-Disk und pack die Firebird Datenbank dort drauf und sprich sie lokal an. Machen wir hier immer für Datenkonvertierungen und der Proz hat dann richtig Last hinterher zu kommen. Will mal eben schauen, wie mein Freeware-Teil heisst.... Gavotte RamDisk. Windows und Firebird können ruhig irgendwo auf HD installiert sein, Prozess läuft eh als Dienst im Hintergrund.

Forced Writes sollte ausgeschaltet sein, sonst wird dauernd weggeschrieben. Hilfreich auch vorher ein Backup/Restore mit UseAllSpace machen.

Außerdem kann man in der firebird.conf noch einige Sachen "tunen", wie z.B.
Code:
DefaultCachePages = 10240 # Mindestens, mehr bringt meist nicht viel
TempDirectories = R:\Temp 100000000;D:\Temp # 100 MB Temp-Directory auf die RAM-Disk (R:)
MaxUnflushedWrites = 5000
MaxUnflushedWriteTime = 15 # Verzögertes Schreiben einschalten
CPUAffinity = 2 # Vom ersten Kern wegnehmen
Carsten

Geändert von DelphiBandit (23. Feb 2011 um 11:18 Uhr)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 12:32
Wird sich ja fast schon alleine durch die unterschiedliche Zugriffszeit von HD und SSD erklären.

Bei einer organisierten Datenbank sind 500.000 Inserts u.U. auch 500.000 Kopfbewegungen.

500.000 x 7 ms = 58 min für die HD
500.000 x 0.1 ms = 1 min für die SSD

Ist zwar nur theoretisch, aber erklärt den Unterschied scheinbar ganz passend.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
533 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 13:23
forced writes deaktivieren lass mal lieber, ist zwar bei Firebird nicht ganz so kritisch wie bei Interbase, aber sollte man trotzdem nie machen, sonst landet nachher wieder so eine DB bei mir zur Reparatur, und die Forced writes inactive Fehler sind selten unkritisch, oft eher irreparabel.

SSDs bringen schon einiges an Speed, insbesondere wegen der Zugriffszeit. Wenn du dir mal mit sysinternals processmonitor anschaust, wo Firebird bei ganz normalen Operationen schreibt, dann siehst du, das das immer von vorne nach hinten im Dateioffset hin und her geht. Daher hilft da der Festplatten interne Cache nur wenig weiter.

wenn du das selber testen willst, dann nimm dir zum Beispiel einfach die db1 demodb aus ibexpert (findest du nach der installation unter C:\Program Files (x86)\HK-Software\IBExpertDemoDB) und mach aus dem Script einfach eine DB. Dann einfach mal die Prozedur initall mit parameter 10000 starten, das macht genau auf deiner Hardware mit deinen Einstellungen dann ca. 800000 Operationen, sprich individuelle insert/update/delete/select statements.

Das ist kein künstlicher Benchmark nur auf einer Tabelle, sondern nutzt eine simples Shop Datenmodell, die Prozedur ist ziemlich selbsterklärend.

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.

Wenn FB dann also im Cache arbeiten kann ist es relativ egal, wie schnell der Datenträger ist, es sei denn, du schreibst extrem oft Transaktionen von unterschiedlichen Clients. Für die von dir angesprochene Auswertung würde ich möglichst nur die Daten von Excel in einem Abwasch in die FB DB pumpen, um dann von dort aus den Vergleich per SP zu machen. SPs können durchaus 1000-5000% schneller sein, als Zugriffe von externen Clients. Wenn deine Exceldaten dann ggf noch in das Firebird external file format übertragen wird (einfaches Textformat mit fester Satzbreite), dann sind auch schnell mal bis zu 100000 Datensätze pro Sekunde in die Datenbank übertragen.

Je nach Anwendung solltest du auf fb25x64 auch noch andere FB Params aus der conf datei anpassen, aber nicht alle bringen Vorteile. Firebird selbst muß nicht auf den schnellen Datenträger, aber FIREBIRD_LCK sollte auch angepasst werden, weil gerade da sehr viel geschrieben wird.

Zusammenfassung: SSD bringt schon vorteile, aber auch nachteile, ich hatte schon 2 Totalausfälle auf SSDs, seit dem empfehl ich die nicht mehr. Firebird schreibt sehr viel und sehr oft, das macht manhce ssd langsamer bis hin zum Stillstand. eine Festplatte WD Raptor o.ä. ist so weit nicht entfernt im Speed und mit ausreichend RAM udn 64 Bit dauerhaft die bessere Lösung, das ist jedenfalls meine Meinung
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
Dumpfbacke

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

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 20:01
Ich hätte da noch zwei Fragen. Die weiteren wenn dann mit der Zeit kommen

Für die von dir angesprochene Auswertung würde ich möglichst nur die Daten von Excel in einem Abwasch in die FB DB pumpen, um dann von dort aus den Vergleich per SP zu machen. SPs können durchaus 1000-5000% schneller sein, als Zugriffe von externen Clients. Wenn deine Exceldaten dann ggf noch in das Firebird external file format übertragen wird (einfaches Textformat mit fester Satzbreite), dann sind auch schnell mal bis zu 100000 Datensätze pro Sekunde in die Datenbank übertragen.
Wie bekomme ich denn die Daten von Excel in einem Abwasch in Firebird ? Ich habe 66 Dateien in Summe ca. 800 MB groß.

Beim Einlesen mittles meines Programmes benutzte schon StoredProcedures. Es sind unterschiedlich Daten. Bei den meisten Daten suchen ich mittels der SP ob der Datensatz schon vorhanden ist (einige Felder müssen hierzu übereinstimmen), wenn ja wir er geupdatet, wenn nein wird er neu eingefügt. Am Ende einer Datei wird geprüft ob noch Datensätze in der DB sind welche nicht neu oder geupdatet sind und die Kriterien von den Geupdateten / Neuen Datensätzue entsprechen diese werden dann gelöscht. Nun wird mit der nächsten Excel Datei weitergemacht bis alle Dateien eingelesen worden sind.

Bei einigen Date muss ich vorher noch Daten aus anderen Tabelle suchen usw. Ob das in einer Sp möglich ist weis ich im Momant nicht. Nur wenn es schon mal mit den anderen Daten schneller geht wäre das schon mal nicht schlecht.

Je nach Anwendung solltest du auf fb25x64 auch noch andere FB Params aus der conf datei anpassen, aber nicht alle bringen Vorteile. Firebird selbst muß nicht auf den schnellen Datenträger, aber FIREBIRD_LCK sollte auch angepasst werden, weil gerade da sehr viel geschrieben wird.
Wo kann ich FIREBIRD_LCK denn anpassen ?

So das wars mal für erste. Ich hoffe ich darf bei weiteren Fragen dich nochmals Fragen.

Danke Tanja
Tanja
  Mit Zitat antworten Zitat
Hansa

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

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 20:34
Wie bekomme ich denn die Daten von Excel in einem Abwasch in Firebird ?
Hat er doch geschrieben :

Wenn deine Exceldaten dann ggf noch in das Firebird external file format übertragen wird (einfaches Textformat mit fester Satzbreite), dann sind auch schnell mal bis zu 100000 Datensätze pro Sekunde in die Datenbank übertragen.
Die Excel-Tabellen müssen zuerst in geeignetem Format exportiert werden (eben am besten feste Feldlängen, statt "CSV" zu wörtlich zu nehmen). Das wäre erst mal Excel.

Wie das auf der FB Seite aussieht steht hier :

http://www.firebirdsql.org/index.php...eful&id=netzka
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
533 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Firebird und Geschwindigkeit mit SSD

  Alt 23. Feb 2011, 20:54
bei aktuellen Excel Versionen geht "speichern unter ...., typ formatierter Text Leerzeichen getrennt", das könnte man dann ggf von Firebird als externe Tabelle benutzen.
ggf ist das aber mit Makroprogrammierung auch schnell erledigt, ich mach mit excel nur das was man nicht vermeiden kann Manchmal schreibt excel dabei nämlich die dateien nicht so wie man die braucht, auch wenn das laut format theoretisch richtig wäre.

Ggf macht es sinn, einfach die Tabelle mittels einer geeigneten Excel Komponente in einem Delphiprogramm verwursten und in ein passendes Format schreiben, das lässt sich ggf besser automatisieren. Würde ich jedefalls bei vielen Dateien und großen Datenmengen so machen. Wenn das relativ wenig Daten sind kannst du auch über ODBC an die Tabelleinhalte ran, das geht unter anderem mit der ibeblock Sprache in IBExpert oder mit Tools-ODBC Viewer. Bei großen Menge ist das über ODBC aber zu lahm.

FIREBIRD_LCK ist einfach eine Umgebungsvariable für deinen Computer, geb einfach in Windows "Start - Suchen" Umgebungsvariable ein, dann unten als neue Systemvariable ergänzen und den Pfad, wo das hin soll, eintragen.
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
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#9

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 08:08
Wenn bzgl. Datentransfer etwas Out-Of-The Box nicht geht, dann würde ich zu einem professionellen ETL Tool wie z.B. Pentaho Data Integration (formals Kettle) greifen. Damit kannst du eine Fülle an Datenquellen anzapfen, verwursten (bereinigen, transformieren ...) etc. und dann wieder irgendwo einfügen. Im Falle von Firebird einfach mit dem JDBC-Treiber.

Für so ein ETL-Tool braucht man zwar etwas Einarbeitungszeit, aber wenn man mal den Dreh heraus hat, dann ist so etwas immer sehr hilfreich.

Thomas
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.332 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Firebird und Geschwindigkeit mit SSD

  Alt 24. Feb 2011, 10:16
Um einen einzelnen Datensatz tatsächlich physisch zu speichern muss die SSD einen komplette Page lesen, die Änderung vornehmen und diese Page wieder speichern. Ich habe die Erfahrung gemacht, das SSD mit "forced writes" beim Schreiben extrem langsamer sind als normale HDD. Sobald man "forced writes" deaktiviert sind SSD wieder schneller.

Wenn das in diesem Beispiel nicht so ist, vermute ich, das der Treiber oder die Firmware der SSD trotz aktivem "forced writes" weiterhin Schreibzugriffe verzögert ausführt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf