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.

Compactage et ré-indexation sous Firebird

Messagepar plonge » 09 Mai 2019 18:00

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é 12 fois
LO version 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06

Re: Compactage et ré-indexation sous Firebird

Messagepar Dude » 20 Mai 2019 08:30

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20733
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Compactage et ré-indexation sous Firebird

Messagepar plonge » 20 Mai 2019 17:02

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 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06

Re: Compactage et ré-indexation sous Firebird

Messagepar Dude » 20 Mai 2019 17:22

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
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20733
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Compactage et ré-indexation sous Firebird

Messagepar plonge » 20 Mai 2019 17:30

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 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06

Re: Compactage et ré-indexation sous Firebird

Messagepar Dude » 21 Mai 2019 16:27

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é
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20733
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Compactage et ré-indexation sous Firebird

Messagepar plonge » 21 Mai 2019 18:59

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 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06

Re: Compactage et ré-indexation sous Firebird

Messagepar Dude » 22 Mai 2019 07:48

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. :?
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20733
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Compactage et ré-indexation sous Firebird

Messagepar camil » 21 Juin 2019 04:47

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.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Compactage et ré-indexation sous Firebird

Messagepar plonge » 21 Juin 2019 07:16

Bonjour camil,
En toute logique l'import/export ne fait que copier des informations sans autre action.
LO version 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06

Re: Compactage et ré-indexation sous Firebird

Messagepar camil » 21 Juin 2019 13:26

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.1.6.3 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
 
Message(s) : 33
Inscrit le : 28 Mai 2019 09:53

Re: Compactage et ré-indexation sous Firebird

Messagepar plonge » 21 Juin 2019 16:32

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   AgrandirRéduire
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 6073 et 6233 sous windows 10 standard, java 1.8.0_211
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 253
Inscrit le : 09 Sep 2010 20:06


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité