![]() |
Datenbank: Firebird • Version: 2.5.2.26540 • Zugriff über: iSQL
Wie bekomme ich einen performanten Firebird?
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 |
AW: Wie bekomme ich einen performanten Firebird?
-Alle Inserts innerhalb einer Transaktion? Wie sieht das Skript aus (Insert, Insert or Update, Merge?)
-Werden mehrere Kerne verwendet? ( Parameter -m, AffinityMask) -Aktive Trigger? |
AW: Wie bekomme ich einen performanten Firebird?
Ich mach das immer so:
|
AW: Wie bekomme ich einen performanten Firebird?
Zitat:
|
AW: Wie bekomme ich einen performanten Firebird?
Das Script sieht so aus (mit 50000 inserts):
Code:
Die Installation habe ich mit der Batchdatei aus dem Zipkit gemacht, ohne irgendwas zu ändern.
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; @perlsau: das insert script habe ich mit einem selbsterstellten tool aus einer Produktions-DB eines anderen DB-Servers generiert. |
AW: Wie bekomme ich einen performanten Firebird?
Gibt es aktive Trigger/Constraints?
Massenimport als externe Tabelle ist die schnellste Alternative |
AW: Wie bekomme ich einen performanten Firebird?
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); |
AW: Wie bekomme ich einen performanten Firebird?
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. |
AW: Wie bekomme ich einen performanten Firebird?
Diese würde ich temporär deaktivieren
SQL-Code:
und am Ende neu berechnen lassen.
alter index <Indexname> inactive;
SQL-Code:
SET statistics INDEX <Indexname>;
|
AW: Wie bekomme ich einen performanten Firebird?
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz