[Résolu] Compactage et ré-indexation sous Firebird

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

[Résolu] Compactage et ré-indexation sous Firebird

Message par plonge »

Bonsoir à toutes et à tous,
Les méthodes CHECKPOINT DEFRAG et SHUTDOWN COMPACT ne fonctionne pas sous Firebird. Un essai avec la ré-indexation en SQL ex: (ALTER TABLE "Table1" ALTER COLUMN "ID" RESTART WITH 1) ne fonctionne pas non plus bien que ne générant pas de message d'erreur.
Ma question : comment compacter une base sous Firebird.
Pas trouvé grand chose sur le web sauf ceci avec un lien qui renvoi à la doc Firebird, mais il s'agit plus d'une réparation ou sauvegarde/restauration à l'aide d'un utilitaire GFIX et GBAK.
Merci d'avance
Pièces jointes
BaseFirebird.odb
(2.92 Kio) Téléchargé 142 fois
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Compactage et ré-indexation sous Firebird

Message par Dude »

Tu mélanges des poires et des pommes. Chaque SGBD a un fonctionnement qui lui est propre.
Mis à part un tronc commun ISO/CEI 9075, les commandes SQL diffèrent ensuite.

Par exemple, MySQL utilise la fonction OPTIMIZE pour réorganiser le stockage physique ainsi que la réindexation des tables.
Pour Oracle, il existe des outils externes car les tables et les index sont localisés dans des espaces spécifiques (tablespace).
Même chose pour MS-SQL/Server où on a un niveau logique et physique de réorganisation.

Bref, des concepts qui te seront expliqués sur un forum dédié au SGBD que tu utilises.

Pour moi, HSQLDB reste un moteur pertinent car c'est une base qui se charge en mémoire et qui fonctionne en monoposte.
Le choix des développeurs de LibO de vouloir intégrer un SGBD sans se soucier de la pertinence du modèle client/serveur est une hérésie.
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Compactage et ré-indexation sous Firebird

Message par plonge »

Salut Dude,
J'ai compris depuis longtemps qu'un sgdb X ne peut pas comprendre les commandes qu'un sgdb Y (voir), mon problème n'est pas là.
Pour ma part HSQLDB ne pose pas de problème mis à part son côté monoposte, espérons qu'il reste opérationnel encore longtemps dans Base.
Puisque les développeurs de LO semble imposer Firebird comme seul sgdb dans les versions futures (voir les notes de versions de LO) j'ose espérer que le choix à été murement pensé et que l'on à pas sacrifier volontairement les applis sous HSQLDB à cours terme.
Ceci dit, curieux de nature, j'ai voulu tester Firebird en convertissant des applis que j'utilise depuis des années avec HSQLDB et contenant un nombres très important de lignes de macros et la comme je l'explique plus haut il faut adapter ou tout refaire. la première solution étant plus tentante que la deuxième on la teste. Actuellement la conversion de mes applis vers Firebird est pour moi une régression (ce qui ne veut pas dire que Firebird est mauvais). La deuxième solution n'étant pas envisageable, donc j'essai d'adapter en cherchant forcément des astuces.
Bref tu l'auras compris mon seul soucis est de passer d'un sgdb à l'autre le plus simplement possible.
plonge
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Compactage et ré-indexation sous Firebird

Message par Dude »

plonge a écrit :J'ai compris depuis longtemps qu'un sgdb X ne peut pas comprendre les commandes qu'un sgdb Y, mon problème n'est pas là.
Ah bon ? Et ta question est pourtant de trouver un équivalent à :
plonge a écrit :CHECKPOINT DEFRAG et SHUTDOWN COMPACT [qui] ne fonctionne pas sous Firebird
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Compactage et ré-indexation sous Firebird

Message par plonge »

Evidemment puisque j'ai besoin de compacter automatiquement depuis une macro et que ces commandes n'existent pas dans Firebird. Ce que je cherche est un équivalent par macro, par assemblage de commandes ou autres peu importe.
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Compactage et ré-indexation sous Firebird

Message par Dude »

plonge a écrit :Evidemment puisque j'ai besoin de compacter automatiquement depuis une macro et que ces commandes n'existent pas dans Firebird.
Et bien je ne vois pas comment une macro pourrait exécuter quelque chose qui n'existe pas. :roll:

D'après ce qu'on peut lire sur Firebird notamment dans la documentation sur GFix, il n'y a pas besoin de compresser.
La méthode de nettoyage consiste simplement à effectuer une sauvegarde de la base de données.
Sauvegarde s'effectuant depuis cet utilitaire en ligne de commande.
Si macro il y a, ce serait donc via une instruction Shell.

Mais bon...
Dans mon 1er message, il y a écrit :des concepts qui te seront expliqués sur un forum dédié
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Compactage et ré-indexation sous Firebird

Message par plonge »

Bizarre! je croyais justement que les macros permettaient d'aller plus loin que les commandes encapsulées :lol: .
Oui j'ai vu cette information qui précise qu'en principe il n'y a pas besoin de compressé si il y a sauvegarde (en principe!).
Je vais bien voir comment ce comporte une grosse base après utilisation et je reviendrais sur ce post.
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Compactage et ré-indexation sous Firebird

Message par Dude »

plonge a écrit :Bizarre! je croyais justement que les macros permettaient d'aller plus loin que les commandes encapsulées
Rien de bizarre puisque les macros ne sont qu'un moyen d'accès à l'API... d'OpenOffice. :?
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 10:53

Re: Compactage et ré-indexation sous Firebird

Message par camil »

Dude a écrit :D'après ce qu'on peut lire sur Firebird notamment dans la documentation sur GFix, il n'y a pas besoin de compresser.
La méthode de nettoyage consiste simplement à effectuer une sauvegarde de la base de données.
Sauvegarde s'effectuant depuis cet utilitaire en ligne de commande.
Je fais mes débuts sur une Base Firebird intégrée. Est-ce qu'un export-import des données peut faire l'affaire ?
LibreOffice 6.3.5 X64 - Windows 10
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Compactage et ré-indexation sous Firebird

Message par plonge »

Bonjour camil,
En toute logique l'import/export ne fait que copier des informations sans autre action.
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 10:53

Re: Compactage et ré-indexation sous Firebird

Message par camil »

Bonjour,
Je pensais :
Une macro pour exporter les tables (en csv par exemple),
puis vider toutes les tables
et enfin autre macro qui importe les données à coup de INSERT.

Ca n'aurait aucun impact ?
LibreOffice 6.3.5 X64 - Windows 10
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Compactage et ré-indexation sous Firebird

Message par plonge »

Re,
Peut être! Pas convaincu, ce qu'il faudrait simplement c'est recréer l'équivalent du 'Checkpoint defrag'. Quelque chose comme cela en Firebird

Code : Tout sélectionner

Sub CompacterBase()   
Dim maRequete As Object
Dim SQL   As String
Dim resultat As   String
Dim login       As String 
Dim password   As String            
'Les paramètres de connexion
	login = ""
	password = ""   
	ThisDatabaseDocument.CurrentController.connect(login, password)
	maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
	If IsNull(maConnexion) then
		MsgBox("Connexion non établie", 16)
	End if
	If NOT IsNull(maConnexion) = False then
		MsgBox("Problème de connection : la connexion n'est pas  établie")
	End if
	If NOT IsNull(maConnexion) = True then
		If MsgBox("Voulez-vous compacter la base? ",289," ") = 1 Then
			' Compactage base
			SQL = "CHECKPOINT DEFRAG"
			maRequete = maConnexion.createStatement()
			resultat = maRequete.execute(SQL)
			MsgBox("Compactage terminé ",48," ") 
		Else
			Exit Sub
		End If
	End if
End Sub
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9223
Inscription : 28 août 2010 10:45

Rappel des règles

Message par micmac »

Bonjour,

On vous rappelle que cette section n'est pas consacrée aux macros : lisez le bandeau rouge en haut de la page.

Merci de votre collaboration
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Compactage et ré-indexation sous Firebird

Message par Dude »

Il n'y a pis sourd que celui qui ne veut pas entendre.
dans la documentation sur GFix, il n'y a pas besoin de compresser.
En clair, il n'y a pas d'équivalent.
C'est comme demander comment mettre du carburant dans une voiture électrique. :fou:

De toute façon, Firebird est considéré par les développeurs comme une fonctionnalité expérimentale.
Il est donc déconseillé de l'utiliser à ce stade.
Verrouillé