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 2 von 7     12 34     Letzte »    
HHennig

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

AW: Wie bekomme ich einen performanten Firebird?

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

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

SET statistics INDEX <Indexname>;

Ist richtig, um es aber explizit darzustellen: nach alter index <Indexname> inactive; und Import zunächst alter index <Indexname> active; und erst dann
SET statistics INDEX <Indexname>;
Hartmut
*
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:18
Stimmt. Davon bin ich implizit ausgegangen ohne es explizit zu schreiben.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#13

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:19
@perlsau: das insert script habe ich mit einem selbsterstellten tool aus einer Produktions-DB eines anderen DB-Servers generiert.
Firebird generiert nur alle 1000 Datensätze ein COMMIT WORK;

Ich würde zusätzlich zu den anderen Tipps auch danach schauen, ob man in deinem Tool einstellen kann, wie häufig ein Commit ausgeführt wird. Keine Ahnung, wieviele Datensätze Firebird ohne Commit speichern kann, aber ich denke, es sind mehr als 1000.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:21
Zitat:
Keine Ahnung, wieviele Datensätze Firebird ohne Commit speichern kann, aber ich denke, es sind mehr als 1000.
Da dürfte es keine Beschränkung geben.

Wie führst Du das Skript aus? Eventuell funkrt Dir da doch noch ein AutoCommit dazwischen.
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
 
#15

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:27
Es scheint an den "mehrfelder" Indizes zu liegen. Ich habe jetzt (nach 2:45h für 50000 Records) den Import für die nächste Test-Tabelle gestartet. Für diese sind nur einfache Indizes definiert. Dort hat er den Import von 110000 Sätzen nach 6 min. Auch noch nicht berauschend, aber es geht.

Die scripts führe ich mit
Code:
input
in der iSQL-Kommandozeile aus.

gstat sagt folgendes:
Database header page information:
Zitat:
Flags 0
Checksum 12345
Generation 5086
Page size 4096
ODS version 11.2
Oldest transaction 4989
Oldest active 4990
Oldest snapshot 4990
Next transaction 4992
Bumped transaction 1
Sequence number 0
Next attachment ID 92
Implementation ID 26
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Apr 24, 2014 11:11:12
Attributes force write
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#16

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:27
Wie führst Du das Skript aus? Eventuell funkrt Dir da doch noch ein AutoCommit dazwischen.
Wie oben angegeben: Im Scripteditor (Ctrl-F12) laden und ausführen oder gleich von Platte ausführen, was etwas langsamer ist, aber bei riesigen Scripts unumgänglich, wenn man nicht genug Arbeitsspeicher hat. Keinesfalls im SQL-Editor laden, das ist viel langsamer. Von irgendwelchen AutoCommits weiß ich nichts.

Wenn ich wüßte, wie man via Server Manager ein Insert-Script einer MSSQL-Tabelle generiert, würde ich mal testweise meine riesige 900000 DS große Ortsdatenbank exportieren und in Firebird einlesen, um zu sehen, wie lange das dauert.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

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

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:32
Wenn ich wüßte, wie man via Server Manager ein Insert-Script einer MSSQL-Tabelle generiert, würde ich mal testweise meine riesige 900000 DS große Ortsdatenbank exportieren und in Firebird einlesen, um zu sehen, wie lange das dauert.
Siehe Bild.
Miniaturansicht angehängter Grafiken
mssqlexport.png  
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#18

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:36
Wenn ich wüßte, wie man via Server Manager ein Insert-Script einer MSSQL-Tabelle generiert, würde ich mal testweise meine riesige 900000 DS große Ortsdatenbank exportieren und in Firebird einlesen, um zu sehen, wie lange das dauert.
Siehe Bild.
Das kenne ich selbstverständlich bereits, aber das erzeugt mir kein Insert-Script aller 900000 DS, sondern lediglich das:
Code:
USE [GeoNames]
GO

INSERT INTO [dbo].[Plaetze]
           ([ISO_Code]
           ,[Postal_Code]
           ,[Place_Name]
           ,[State]
           ,[State_Code]
           ,[Provinz]
           ,[Provinz_Code]
           ,[Kommune]
           ,[Kommune_Code]
           ,[Latitude]
           ,[Longitude]
           ,[Genau])
     VALUES
           (<ISO_Code, char(2),>
           ,<Postal_Code, nvarchar(50),>
           ,<Place_Name, nvarchar(180),>
           ,<State, nvarchar(100),>
           ,<State_Code, nvarchar(50),>
           ,<Provinz, nvarchar(100),>
           ,<Provinz_Code, nvarchar(50),>
           ,<Kommune, nvarchar(100),>
           ,<Kommune_Code, nvarchar(50),>
           ,<Latitude, numeric(7,4),>
           ,<Longitude, numeric(7,4),>
           ,<Genau, tinyint,>)
GO
Hab nur gerade keine Lust, ein Programm zu schreiben, das mir das Insert-Script generiert, ich schau mir nämlich nebenher einen Film an und gehe danach zu Bett, weil ich eigentlich schon saumäßig müde bin. Für das Anlegen einer Tabelle in FB würd's aber grad noch reichen

Geändert von Perlsau (24. Apr 2014 um 18:39 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:40
Wenn ich wüßte, wie man via Server Manager ein Insert-Script einer MSSQL-Tabelle generiert, würde ich mal testweise meine riesige 900000 DS große Ortsdatenbank exportieren und in Firebird einlesen, um zu sehen, wie lange das dauert.
Gar nicht. Das geht mit dem Import/Export-Wizzard und dann wird das per ODBC/OLE (je nachdem, was man auswählt) mehr oder minder performant (meist mehr) durchgezogen.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#20

AW: Wie bekomme ich einen performanten Firebird?

  Alt 24. Apr 2014, 18:42
Genau das hatte ich befürchtet: Da hat man nun ein gewaltig aufgeblähtes Werkzeug und kann nicht mal Insert-Scripts erzeugen. Okay, vielleicht mach ich das morgen mal mit einer Stringliste. Bis dann ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 7     12 34     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 20:02 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