AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase

Ein Thema von Fritzew · begonnen am 29. Mai 2017 · letzter Beitrag vom 1. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Interbase

  Alt 5. Jun 2017, 20:10
Nun denn, dann einfach mal für jeden reproduzierbare Resultate (erst mal single
threaded, aber schon markant):

In jeder IBExpert Version (auch in der Personal Edition) ist im Demo DB
Pfad ein Script, das so auch mit Interbase funktioniert. Ob man das über
IBExpert oder isql oder sonstwie ausführt, macht keinen Unterschied.

Beide Datenbanken werden mit 16k pagesize angelegt (8k machte bei beiden
keinen Vorteil).

Wenn die DB fertig ist, dann wird über IBExpert - Services - Database Properties
oder gfix der cache buffer auf 5000 gesetzt, so das der Cache ausreichend groß sein
sollte (was die geringen Zahlen als Ergebnisse von reads und writes auch
so bestätigen). Anschliessend disconnect und reconnect damit die buffers
gesetzt sind.

In beiden Datenbanken wird der jeweilige Client für 32 Bit eingesetzt
(fbclient aus firebird 3.0.2 und gds32.dll aus dem installierten Paket).
Der Test lief mit IBExpert, lässt sich aber auch mit der jeweiligen isql
Version ausführen

Beide DB Server sind 64 Bit Version auf identischer Hardware/Windows 10 Version
(firebird Version 3.0.2 bzw. Interbase 2017 Developer Edition 13.0.0.129)

Damit der Test einfach reproduzierbar ist, wird nun zunächst einfach
mal jeweils 3 mal die SP initall gestartet mit dem parameter 10000
und danach jeweils disconnect/connect gemacht (weil beim ersten durchlauf
noch keine Daten gelöscht werden müssen).

Wenn das durch ist, dann startet man nun initall mit 10000 auf beiden
Datenbanken, später dann noch mal 3 mal zum Auwärmen mit 100000
10000 erzeugt ca. 910000 individuelle insert/update/delete/select statements
100000 erzeugt ca. 9,1 Mio individuelle insert/update/delete/select statements


Ergebnisse

Interbase 10000 9,36 Sekunden
Firebird 10000 4,11 Sekunden

Interbase 100000 160,33 Sekunden
Firebird 100000 57,63 Sekunden

(ohne Statistik, aber mit 1 mio als param wird die db ca 1.3 GB groß)
Interbase 1000000 37 Minuten
Firebird 1000000 12 Minuten


Unter ".. kann da FB noch mithalten" versteh ich da was völlig anderes ....

Interbase braucht bei den meisten mir bekannten mehr oder weniger komplexeren
Operationen 2-10 mal länger als Firebird (und ich rede da auch multithreaded nicht
von der begrenzt vorteilhaften classic/superclassic version auf lahmen Festplatten
und wir haben Firebird verschiedensten Hardware- und Userzahlkonfigurationen da
im Einsatz ).

ich würde mich freuen, wenn du das mit reproduzierbaren Beispielen widerlegen
könntest, die nicht nur auf Inkompatibilitäten basieren. Zeig mir irgendwas,
das Interbase schneller kann.

Ich glaub auch keineswegs, das das irgendwie an der Developer Edition liegen sollte,
falls das das Argument wäre, weil gleichartige Ergebnisse auch bei Kunden mit
lizensierten Interbase Versionen mit reichlich cores identische Verhältnisse
ergab.



Query Statistiken aus IBExpert (die leichten Abweichungen der Operation liegen
an der Random Funktion)

Code:

Anfang Interbase 2017

10000

35169 record(s) was(were) updated in INVENTORY
10000 record(s) was(were) updated in ORDERS

10000 record(s) was(were) deleted from CUSTOMER
10000 record(s) was(were) deleted from INVENTORY
10000 record(s) was(were) deleted from ORDERS
10000 record(s) was(were) deleted from PRODUCT
34993 record(s) was(were) deleted from ORDERLINE

10000 record(s) was(were) inserted into CUSTOMER
10000 record(s) was(were) inserted into INVENTORY
10000 record(s) was(were) inserted into ORDERS
10000 record(s) was(were) inserted into PRODUCT
35169 record(s) was(were) inserted into ORDERLINE

------ Performance info ------
Prepare time = 0ms
Execute time = 9s 359ms
Current memory = 32.743.344
Max memory = 35.797.280
Memory buffers = 1.783
Reads from disk to cache = 790
Writes from cache to disk = 51
Fetches from cache = 4.851.962


100000


349393 record(s) was(were) updated in INVENTORY
100000 record(s) was(were) updated in ORDERS

100000 record(s) was(were) deleted from CUSTOMER
100000 record(s) was(were) deleted from INVENTORY
100000 record(s) was(were) deleted from ORDERS
100000 record(s) was(were) deleted from PRODUCT
350371 record(s) was(were) deleted from ORDERLINE

100000 record(s) was(were) inserted into CUSTOMER
100000 record(s) was(were) inserted into INVENTORY
100000 record(s) was(were) inserted into ORDERS
100000 record(s) was(were) inserted into PRODUCT
349393 record(s) was(were) inserted into ORDERLINE

------ Performance info ------
Prepare time = 0ms
Execute time = 2m 40s 328ms
Current memory = 89.204.944
Max memory = 89.225.424
Memory buffers = 5.000
Reads from disk to cache = 40.517
Writes from cache to disk = 3.947
Fetches from cache = 49.142.098


Ende Interbase 2017



Anfang Firebird 3.0.2

10000

34953 record(s) was(were) updated in INVENTORY
10000 record(s) was(were) updated in ORDERS

10000 record(s) was(were) deleted from CUSTOMER
10000 record(s) was(were) deleted from INVENTORY
35007 record(s) was(were) deleted from ORDERLINE
10000 record(s) was(were) deleted from ORDERS
10000 record(s) was(were) deleted from PRODUCT

10000 record(s) was(were) inserted into CUSTOMER
10000 record(s) was(were) inserted into INVENTORY
34953 record(s) was(were) inserted into ORDERLINE
10000 record(s) was(were) inserted into ORDERS
10000 record(s) was(were) inserted into PRODUCT

------ Performance info ------
Prepare time = 0ms
Execute time = 4s 109ms
Current memory = 88.583.408
Max memory = 89.313.520
Memory buffers = 5.000
Reads from disk to cache = 1.071
Writes from cache to disk = 18
Fetches from cache = 3.917.798


100000


350293 record(s) was(were) updated in INVENTORY
100000 record(s) was(were) updated in ORDERS

100000 record(s) was(were) deleted from CUSTOMER
100000 record(s) was(were) deleted from INVENTORY
349696 record(s) was(were) deleted from ORDERLINE
100000 record(s) was(were) deleted from ORDERS
100000 record(s) was(were) deleted from PRODUCT

100000 record(s) was(were) inserted into CUSTOMER
100000 record(s) was(were) inserted into INVENTORY
350293 record(s) was(were) inserted into ORDERLINE
100000 record(s) was(were) inserted into ORDERS
100000 record(s) was(were) inserted into PRODUCT

------ Performance info ------
Prepare time = 0ms
Execute time = 57s 625ms
Current memory = 89.840.264
Max memory = 92.460.528
Memory buffers = 5.000
Reads from disk to cache = 26.224
Writes from cache to disk = 19.499
Fetches from cache = 52.106.099

Ende Firebird 3.0.2
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#2

AW: Interbase

  Alt 7. Jun 2017, 10:24
Firebird installiert (3.0.2), IBExpert installiert.
DB erzeugt..... INITALL aufgerufen:

Code:
validation error for column "CUSTOMER"."FIRSTNAME", value "*** null ***".
At procedure 'INITALL' line: 106, col: 5.
(Hat der Editor von IBExperts noch nichtmal eine Zeilennummerierung?!?!?)
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Interbase

  Alt 8. Jun 2017, 16:53
Zitat:
Code:
validation error for column "CUSTOMER"."FIRSTNAME", value "*** null ***".
At procedure 'INITALL' line: 106, col: 5.
(Hat der Editor von IBExperts noch nichtmal eine Zeilennummerierung?!?!?)
Ich denke jetzt wird es unterirdisch....... (professionell ist anders)

wie wäre es mit
(Hat der Formulardesigner von Delphi nicht nicht einmal ein Undo?!?!?!?) Ist auch nicht besser oder?

Von mir aus kann der Thread geschlossen werden, bevor das hier noch ausartet.
Habe mich für Firebird entschieden, es geht um ca 70 Clients und es werden ziemlich sicher noch mehr.
Das wird für den Einsatzzweck zu teuer. Das ist aber eine Entscheidung für diesen speziellen Fall und sollte nicht als allgemeine Aussage gewertet werden!

Danke an alle die geantwortet haben.

Zitat:
Wenn du Lust auf eine gemeinsame Session mal irgendwo auf einer Konferenz hast steh ich
gerne bereit, jeder sucht sich 50% der Beispiele aus und der jeweils andere versucht
das nachzumachen.
Würde ich gerne z.B an den Foren-Tagen sehen
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Interbase

  Alt 8. Jun 2017, 22:53
Ich denke jetzt wird es unterirdisch....... (professionell ist anders)
Nö so schlimm ist das nicht. Stell Dir vor, ein Anfäger bekommt eine Routine in die Finger, die von sich behauptet sie läuft auf beiden Datenbanken. Der weiß doch nicht ob der eine oder andere Default Wert sich unterscheidet. Der sieht "läuft auf beiden DB" und die Fehlermeldung und denkt ...
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interbase

  Alt 9. Jun 2017, 10:45
Zitat:
Code:
validation error for column "CUSTOMER"."FIRSTNAME", value "*** null ***".
At procedure 'INITALL' line: 106, col: 5.
(Hat der Editor von IBExperts noch nichtmal eine Zeilennummerierung?!?!?)
Ich denke jetzt wird es unterirdisch....... (professionell ist anders)
Deine Meinung. Sei dir unbenommen.....

Das ein Editor (ich weiß um die Problematik der BLRs) eine Zeilennummerierung haben sollte (was er ja wohl auch hat), ist kein ungewöhnlicher Anspruch....
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#6

AW: Interbase

  Alt 9. Jun 2017, 11:00
Da ich das Beispiel mit Firebird und "IBExpert" nicht zum laufen bekommen habe, hier mal TPC Ergebnisse mit 4 DWHs. Dies ist ein durchaus anerkannter Benchmark für Datenbanken.....

(Intel i7, 4 CPUs/Cores, i7-4960HQ, 2.6 GHz, Windows 10, 64 Bit, 4 GB RAM):

InterBase 2017:
TPC-C Throughput: 14002.95 tpmC

Firebird 3.0.2
TPC-C Throughput: 9934.92 tpmC

Die Messungen habe ich gerade selbst durchgeführt..... bei mehr DWH sieht es ja noch schlechter für Firebird aus:
https://www.embarcadero.com/de/produ...rbase_firebird

Genauer(r Ergebnisse im Anhang):
Interbase:
Code:
Transaction Mix, in percent of total transactions
Transaction   Count   Percent
new order   168034   43.48
payment    168033   43.48
order status   16805   4.35
delivery   16804   4.35
stock level   16803   4.35

Response Times, in seconds
Transaction   90th %ile   Minimum   Average   Maximum
new order   0.250   0.000   0.009   3.031
payment    0.250   0.000   0.003   3.017
order status   0.250   0.000   0.022   0.079
delivery   0.250   0.000   0.031   3.047
stock level   0.250   0.000   0.005   0.047
Firebird:
Code:
Transaction Mix, in percent of total transactions
Transaction   Count   Percent
new order   119217   43.48
payment   119211   43.48
order status   11922   4.35
delivery   11924   4.35
stock level   11924   4.35

Response Times, in seconds
Transaction   90th %ile   Minimum   Average   Maximum
new order   0.250   0.000   0.005   0.062
payment   0.250   0.000   0.002   0.032
order status   0.750   0.015   0.126   0.453
delivery   0.250   0.000   0.003   0.032
stock level   0.250   0.000   0.046   0.172
Angehängte Dateien
Dateityp: zip Archiv.zip (3,2 KB, 6x aufgerufen)
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#7

AW: Interbase

  Alt 9. Jun 2017, 15:40
Habe noch mal einige Folgetests gemacht (immer 4 Warehouses):
(Jeweils neuer PREPARE und LOAD)

InterBase 2017:
TPC-C Throughput: 13879.43 tpmC
TPC-C Throughput: 13403.73 tpmC

(Ohne Journaling zum Vergleich:
TPC-C Throughput: 12827.94 tpmC)

Firebird 3.0.2:
TPC-C Throughput: 9943.16 tpmC
TPC-C Throughput: 9347.40 tpmC

(Man sah bei Firebird auch gut, daß die CPUs nicht gleichförmig ausgelastet werden)
Bildschirmfoto 2017-06-09 um 15.41.49.jpg

Vergleichsweise InterBase 2017 dazu:
Bildschirmfoto 2017-06-09 um 16.50.43.png

Auffällig auch der hohe RAM Bedarf von Firebird ggü InterBase: 900 MByte / 630 MByte
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN

Geändert von MEissing ( 9. Jun 2017 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

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

AW: Interbase

  Alt 9. Jun 2017, 22:16
Das ist doch schon mal ein Ansatz. Wenn ich mal Zeit hab schau ich mir das auch noch an,
aber auf den ersten Blick IB journaling+async writes gegen Firebird sync writes ist ja
schon mal nicht so ganz zu ignorieren. Ich werde mal bei Gelegenheit bei Varianten
auf Ausfallsicherheit und vergleichbaren Einstellungen testen. Traue keiner Statistik,
die du nicht selber gefälscht hast ....

Wie Ihr auf die 10000, 20000 oder 50000 US$ Support in dem Dokument kommt, erschliesst sich mir
auch nicht wirklich, außer man will explizit einen teuren Mitbewerber als Vergleichsmaßstab.

Und geht bitte nicht davon aus, das es Support nur bei IBPhoenix gibt, zum Glück gibt
es im Firebird Umfeld weit mehr Anbieter als nur IBPhoenix, irgendwelche Pauschalpreise,
die irgendwas abdecken, kommen eh im Open Source Umfeld nicht gut an.

Unser größtes Multimaster Replikationsprojekt bei einer sehr stark wachsenden Gastronomie
Kette, die einige sicherlich auch von persönlichen Besuchen kennen und deren Business
Software mit Delphi entwickelt wird, verbindet im Moment 140 Standorte in Deutschland mit
einer Datenbankserverhardware von uns. Da haben wir jeden Tag ca 1.5 Millionen
neue Datensätze zu verteilen, mit allen Zielen ergeben sich da ca 15 Millionen
Replikationsvorgänge innerhalb von 24 Stunden, da nicht jeder alle Daten bekommt.

Das Projekt ist real existierend und pro Standort zahlt der Kunden inkl Hardware, Software
und DB mit Replikation nicht mal 1000 € einmalig und zzgl ca 80 € Wartung pro Jahr.

Wir haben sämtliche Datenänderungen der letzten 3 Jahre im Log und können bei
Bedarf Techniken aus anderen Projekten ergänzen, mit denen beliebige Transaktionen
aus dem Log auch Jahre später noch rückgängig gemacht werden können (versehentlich
gelöschte Datensätze o.ä.). Das was wir da machen ist beim besten Willen eine ganz
andere Baustelle, als das was man sich mit IBReplicator zusammenklickt und auch die
Features von Interbase zum Thema Replikation würden an den Anforderungen garantiert
gnadenlos scheitern. Wenn ein Server offline ist (internet weg), kann der trotzdem
an dem Standort weiterarbeiten und synchronisiert sich automatisch sobald wieder
online ohne admin Eingriff.

Wenn übrigens schon Preise in den Raum geworfen werden und sich jemand die Mühe macht, das
englische Original in deutsche zu übersetzen, dann bitte auch die deutschen Preise einsetzen
Laut dieser Webseite https://www.embarcadero.com/de/app-d...tore/interbase
kostet Interbase Unlimited € 9621,15 und nicht nicht 7030 US$. Und im Grundpreis sind
nur 8 cores freigeschaltet. Weitere 8 Cores kosten je noch mal 1480 €.

Bei den Preisen seit Ihr da fast auf MSSQL Server Niveau, der bietet aber noch mal deutlich mehr
als interbase.

Um die o.a. Architektur abzubilden hätten wir mindestens 12 Interbase unlimited
kaufen müssen und weiter über hundert weitere it mindestens 5-10 Usern.

Und ja, ich weiss, da gibt es das VAR Programm, mit dem das alles viel preiswerter gehen könnte
usw.

Ich für meinen Teil schau mir aber auf jeden Fall mal deinen Test genauer an und würde
mich durchaus drauf freuen, wenn wir uns da zB auf den Forentagen auseinandersetzen
können, auch wenn wir dann das anschliessende Bierchen getrennt zu uns nehmen müssen
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Interbase

  Alt 9. Jun 2017, 22:20
(Man sah bei Firebird auch gut, daß die CPUs nicht gleichförmig ausgelastet werden)
Anhang 47486

Vergleichsweise InterBase 2017 dazu:
Anhang 47490
und viel interessanter als die CPU Last ist die von dir gezeigte I/O Last auf dem Datenträger C:
Bei Interbase macht der nichts auf der Platte (async oder forced writes off) und bei Firebird
ist die Platte an der Lastgrenze (sync oder forced writes on).

Wenn da nun der Server viele Transaktion im Journal nur im Speicher hält ist das im fehlerfall
keineswegs gleichwertig mit forced writes on.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Interbase

  Alt 8. Jun 2017, 20:40
Firebird installiert (3.0.2), IBExpert installiert.
DB erzeugt..... INITALL aufgerufen:

Code:
validation error for column "CUSTOMER"."FIRSTNAME", value "*** null ***".
At procedure 'INITALL' line: 106, col: 5.
(Hat der Editor von IBExperts noch nichtmal eine Zeilennummerierung?!?!?)
Doch, hat der IBExpert Editor, ist aber nicht immer sinnvoll, und man kann daher
selber entscheiden ob man das haben möchte oder nicht.

http://ibexpert.net/ibe/index.php?n=...#EditorOptions

Der Null fehler deutet darauf hin, das du keinen Parameter an die SP übergeben
hast, dann weiss die nicht, wie groß die db werden soll. Nimm zB 10000 als Anfang

Und zur Zeilennummer: Im Default arbeitet der SP Editor im Lazy mode und zeigt nur
Zeilennummern im Body an, daher würde die von FB generierte Fehlernummer woanders
hinzeigen. Um die übereinstimmen zu lassen, setze hier statt lazy den Standard mode

http://ibexpert.net/ibe/index.php?n=...2900#ProcEdOpt

Und es ist ja nun keineswegs so das Delphi schon immer Zeilennummern konnte,
zumindest bis inkl V7 war das gar nicht möglich, das nur so am Rande

Während der Forentage bin ich leider im Amerika, würde aber wenn Daniel es
technisch ermöglichen kann, gerne die Session mit Matthias auch remote machen.

Ich hab da wo ich an dem Samstag bin, sehr gutes Internet und über pcvisit können
wir problemlos auf auf den Bildschirmen zwischen Hamburg und USA für alle sichtbar
umschalten.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:58 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