AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie bekomme ich einen performanten Firebird?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie bekomme ich einen performanten Firebird?

Ein Thema von Union · begonnen am 24. Apr 2014 · letzter Beitrag vom 28. Apr 2014
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:01
Datenbank: Firebird • Version: 2.5.2.26540 • Zugriff über: iSQL
Ich habe zum Test auf einem unserer Server Firebird als SuperClassic installiert. Um die Performance zu testen wollte ich aus einer anderen Datenbank Testdaten übertragen und dann einge Quälscripts laufen lassen.

Leider bin ich jetzt der Gequälte.

Nach der Anlage der Datenbank und Tabellen füge ich Testdaten per iSQL-Script hinzu. Die Laufzeit ist aber ziemlich unterirdisch. Für 100 Records werden ca. 3-5 Sekunden benötigt. Das ist meherere hundert Male langsamer als ich das von anderen DB-Servern kenne.

Was kann ich wo und wie drehen, damit die Performance besser wird? Systemauslastung ist bei unter 1%.

System:

Windows 2008 Server R2
2x Intel Xeon E6520 (zus. 16 Kerne)
24 GB Speicher
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:48
-Alle Inserts innerhalb einer Transaktion? Wie sieht das Skript aus (Insert, Insert or Update, Merge?)
-Werden mehrere Kerne verwendet? ( Parameter -m, AffinityMask)
-Aktive Trigger?
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:51
Ich mach das immer so:
  1. Daten einer Firebird-Tabelle im IbExpert anzeigen lassen.
  2. Links oben auf Tabelle/Exportiere Daten in Script
  3. Felder und Dateiname auswählen und exportieren
  4. Script in der Zieldatenbank laden und starten.
Schneller geht's nicht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:52
Zitat:
....Daten einer Firebird-Tabelle im IbExpert anzeigen lassen....
Es handelt sich wohl um Datn eines anderen DBMS.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:53
Das Script sieht so aus (mit 50000 inserts):
Code:
Insert into Bestand values(21654631, 23, '1918298', 23899, null, null, null, '20', '2020682276', 21649245, 747, 21649993, null, null, 'IT', '/', 'IT', 40.34, 'Ft', null, null, 147390, 2573092, null, null, null, '2008-06-12', '11:12:05', '2009-03-25', null, 6, 0, null, null);
Insert into Bestand values(22138465, 24, '2543234', 19510874, null, null, null, '0001', '7022371544', 22110364, 220, 22110386, null, null, 'CN', null, null, 0, null, null, null, 147390, 144627, null, null, null, '2009-03-25', '15:17:32', null, null, 2, 0.03696, null, null);
Insert into Bestand values(22156974, 23, '2577937', 64322, null, null, null, '20', '2020682334', 22128344, 399, 22128744, null, null, 'ES', '/', 'ES', 8.86, 'Ft', null, null, 69667, 105578, null, null, null, '2009-04-14', '15:59:51', null, null, 4, 0, null, null);
-- ... Alle 100 records ein commit:
commit;
Die Installation habe ich mit der Batchdatei aus dem Zipkit gemacht, ohne irgendwas zu ändern.

@perlsau: das insert script habe ich mit einem selbsterstellten tool aus einer Produktions-DB eines anderen DB-Servers generiert.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 17:58
Gibt es aktive Trigger/Constraints?
Massenimport als externe Tabelle ist die schnellste Alternative
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:00
Keine Trigger, keine Constraints, keine Relationen. Aber 8 Indizes:
Code:
CREATE INDEX "BESTAND_ID" ON BESTAND (ID);
CREATE INDEX "BESTAND_MAND_ID" ON BESTAND (MAND_ID, ART_ID);
CREATE INDEX "BESTAND_ART_ID" ON BESTAND (ART_ID, MAND_ID);
CREATE INDEX "BESTAND_ZUG_NR" ON BESTAND (ZUG_NR, MAND_ID, ART_ID);
CREATE INDEX "BESTAND_PAL_NR" ON BESTAND (MAND_ID, PAL_NR);
CREATE INDEX "BESTAND_FIFO" ON BESTAND (MAND_ID, ART_ID, ZUG_DAT, ZUG_ZEIT);
CREATE INDEX "BESTAND_PLATZ_ID" ON BESTAND (PLATZ_ID, ART_ID, ZUG_DAT);
CREATE INDEX "BESTAND_KUND_ID" ON BESTAND (KUNDE_ID);
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
HHennig

Registriert seit: 16. Feb 2007
Ort: Pforzheim
51 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:05
Schalte mal alle nicht absolut benötigten (alles ausser Primary Indices) aus. Massenimport und viele Indices ist ganz schlecht - bei jedem DBMS.

Edit: Nach beendetem Import dann alle vorher deaktivierten Indices neu aufbauen lassen.
Hartmut
*

Geändert von HHennig (24. Apr 2014 um 18:08 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:07
Diese würde ich temporär deaktivieren

alter index <Indexname> inactive; und am Ende neu berechnen lassen.

SET statistics INDEX <Indexname>;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:12
Klar dass ein Indexupdate Zeit braucht. Aber ein Durchsatz von nur 5 Records/s ist doch etwas fragwürdig. In der Zeit schreibe ich normalerweise ein komplette SAP-SHPORD mit mehreren 100 records. Und Massenupdates sind auch in der Produktion an der Tagesordnung, wenn Material Master Updates laufen. Da liegt die Geschwindigkeit bei > 1000 IDoc / min. inklusive Analyse.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 7  1 23     Letzte »    


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 04:33 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