PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » C# et VACUUM sur table d'un autre schéma » 26/08/2011 16:08:42

C'est bon, problème résolu.

Rien à voir avec PostgreSQL, lorsqu'il me construisait ma commande, il disait que c'était une commande de type "Procédure stockée" et rajoutait systématiquement le select * from...

En modifiant pour dire qu'il s'agissait d'une commande de type Texte, cela fonctionne.

Merci de ton aide...

#2 Re : Général » C# et VACUUM sur table d'un autre schéma » 26/08/2011 15:55:31

Je suis en PostgreSQL 8.4

J'insiste bien sur le fait que tout marche directement dans PostgreSQL, mais c'est dans mon appli que la requête plante...
Comme il s'agit d'une appli C#, je récupère directement le message C# qui est donc : Erreur de syntaxe sur ou près de "."'

Et quand je regarde mon exception, j'ai l'impression, qu'il exécute en fait un : select * from VACUUM monAutreSchema.maTable.

Alors que mon code fait:

sqlHelper.executeProc("VACUUM monAutreSchema.maTable")

#3 Général » C# et VACUUM sur table d'un autre schéma » 26/08/2011 15:10:45

sylvinhio
Réponses : 3

Bonjour à tous,

J'ai une application dans laquelle des données sont insérées en base, dans un schéma différent du schéma standard "public".

L'utilisateur sélectionne une option dans le menu, pour recalculer des données dans cet autre schéma.
Cette option du menu exécute une fonction PGSQL qui effectue les insert/maj. La fonction PGSQL est elle définie dans le schéma standard "public".

Comme l'utilisateur peut effectuer ceci à volonté, je souhaite ajouter à la fin de ces exécutions un VACUUM de la table concernée, puis un ANALYSE et un REINDEX.

J'ai donc implémenté une fonction PGSQL qui exécute un VACUUM "monAutreSchema".maTable.

==> J'obtiens une erreur qui m'indique que la commande VACUUM ne peut être effectuée depuis une fonction.


J'implémente donc directement le VACUUM à la fin de mes insert. Lorsque les insert sont terminés, j'exécute en C# la commande : VACUUM "monAutreSchema".maTable

==> J'obtiens une erreur qui m'indique une erreur de syntaxe sur ou près de "."'

Je ne sais donc comment exécuter ce VACUUM en ligne de commande... Le fait de préfixer le nom de la table par le nom du schéma a l'air de poser problème...

Des idées ?

Merci par avance de votre aide

#4 Général » Utilisation index » 22/03/2011 11:53:45

sylvinhio
Réponses : 2

Bonjour,

J'ai un serveur PostgreSQL installé sur un OS Windows XP.

Dans mon schéma, j'ai une table simple qui contient plusieurs millions de lignes.
Cette table est composée de 4 colonnes :

- id_fiche
- id_champ
- valeur_champ
- numéro

Ces 4 champs sont des entiers

La table comporte les index suivants :

- un index basé sur id_fiche
- un index basé sur id_champ


Lorsque je fais un très simple :

SELECT inst_id FROM maTable where id_champ = 8

La requête met plus de 80 secondes à s'exécuter !!!
J'ai pourtant effectué toutes les opérations de maintenance (vaccum, analyse, reindex) juste avant...
Et lorsque je fais un explain, mon index est bien utilisé.

Je ne sais plus ce que je dois regarder comme options...
Je ne risque pas d'optimiser beaucoup de requêtes complexes si une simple requête est aussi longue...

Merci par avance de votre aide...

Cordialement,

#5 Re : PgAdmin3 » Cache PgAdmin » 22/03/2011 11:16:42

Il semble que le redémarrage du service ne suffise pas...

#6 PgAdmin3 » Cache PgAdmin » 22/03/2011 11:05:01

sylvinhio
Réponses : 3

Bonjour,

Je fais tourner un serveur PgAdmin sous Windows XP.

J'essaye d'optimiser quelques requêtes mal écrites sous PgAdmin, mais je me rends compte que les temps d'exécution sont faussés par la mise en cache.
En effet, après optimlisation, certaines requêtes semblent rapides, mais dès que ej redémarre (physiquement) mon serveur, les perfs s'écroulent pour la même requête.

Comment puis-je être certain des perrformances de mes requêtes ?
En désactivant la mise en cache du client PgAdmin ?

Merci de votre aide...

Cordialement


Sylinhio

#7 Re : Général » Erreur lecture bloc table » 23/11/2010 19:02:57

Bon, merci pour toutes ces informations...

Bonne continuation

#8 Re : Général » Erreur lecture bloc table » 23/11/2010 18:50:35

Quand tu parles de fichiers, c'est de fichiers physiques ?

Moi je parle de sauvegarde / restauration par les commandes dump et restore...

#9 Re : Général » Erreur lecture bloc table » 23/11/2010 18:44:14

"Ou quelqu'un qui restaure un fichier dans la base, fichier qui se retrouve incohérent avec les index"

Nous avons dans notre application un système de sauvegarde / restauration de la base.
Ceci est peut être dû à celà...

Peux-tu m'en dire plus sur ce cas d'erreur ?

#10 Re : Général » Erreur lecture bloc table » 23/11/2010 18:33:58

Je n'en ai aucun idée...

Je retourne la question smile
Comment ceci peut-il arriver se produire ?

Merci de ton aide

#11 Général » Erreur lecture bloc table » 23/11/2010 18:28:49

sylvinhio
Réponses : 8

Bonjour à tous,

J'essaye d'exécuter une opération de maintenace sur une base de données PostgreSQL.
Je suis dans un environnement Windows (XP).

J'obtiens le message d'erreur suivant :

ERREUR : n'a pas pu lire le bloc 3261 de la relation base/109755/110543 : Invalid argument


A quoi est due cette erreur ?

Merci par avance de votre aide.

Cordialement

Sylvinhio

#12 Re : Général » ligne de commande et transaction en C# » 12/07/2010 13:59:27

Il n'existe donc aucun moyen d'exécuter cette instruction (qui est l'instruction \copy) dans une transaction déjà existante ?

#13 Re : Général » ligne de commande et transaction en C# » 12/07/2010 12:00:32

Marc : Merci mais le problème n'est pas de créer une transaction, j'ai déjà fait cela.
ce que je souhaite c'est utiliser cette transaction pour que mon instruction en ligne de commande soit faite dans cette transaction.

Administrator : Aïe...

#14 Général » ligne de commande et transaction en C# » 12/07/2010 11:13:13

sylvinhio
Réponses : 6

Hello tout le monde,

J'utilise une base PostgreSQL 8.4 avec un client lourd en C#.

Mon application, à un moment donné, exécute une instruction en ligne de commande. Mon souci est que cette instruction doit être exécutée dans le cadre d'une transaction particulière (initiée dans mon client lourd).

En gros j'exécute mon instruction de la sorte :

Process myProcess = new process();

ProcessStartInfo infos = new ProcessStartInfo();
infos.Arguments = xxxxxx
infos.FileName = xxxxxx
.......

myProcess.StartInfo = infos;
myProcess.Start();
myProcess.WaitForExit();

Mais je souhaite que le select que j'effectue dans mon instruction soit dans une transaction que j'ai initiée ultérieurement.

Comment faire ?

Merci d'avance pour votre aide

#16 Re : Général » COPY et création de fichier » 09/07/2010 17:39:20

Lorsque j'effectue la commande suivante dans PgAdmin, côté client :

COPY maTable FROM monFichier

il me dit bien qu'il ne trouve pas le fichier


Si j'effectue la commande suivante :

\copy maTable FROM monFichier

j'ai une erreur de syntaxe sur le caractère "\"


des idées ?

#17 Re : Général » COPY et création de fichier » 09/07/2010 17:26:02

Donc je peux utiliser COPY maTable FROM STDIN monFichier ?

#18 Général » COPY et création de fichier » 09/07/2010 17:05:53

sylvinhio
Réponses : 6

Bonjour,

Je souhaite utiliser la fonction COPY pour charger massivement une table.
Mon problème est que mes données viennent de mon client (application).

Des INSERT multiples sont inimaginables (trop lent !).
Je souhaite donc faire un COPY à partir d'un fichier, mais ce dernier doit impérativement se situer sur le serveur (qui n'a pas de visibilité sur mon application client).

Donc le seul moyen est de créer ce fichier depuis le serveur.
Est-il possible de créer un fichier texte avec une librairie PostgreSQL ?

Merci pour votre aide

Cordialement,

#19 Re : Général » Problème Test Connexion base PostgreSQL 8.4 » 23/03/2010 15:20:39

Merci pour votre retour,

L'applicatif est fait en C#.
j'ai trouvé d'ou venait le problème.
L'invocation de ma ligne de commande est fait par une instruction WaitForExit() sur mon objet Process.

Or il y avait un timeout d'1 seconde [WaitForExit(1000)] qui ne laissait pas le temps à mon applicatif de se connecter.

En supprimant ce timeout, le tout fonctionne correctement.

#20 Général » Problème Test Connexion base PostgreSQL 8.4 » 22/03/2010 11:26:33

sylvinhio
Réponses : 2

Bonjour,

j'ai créé un petit utilitaire qui teste l'existence d'une base de données nommée "base_Production"

Cet utilitaire exécute simplement la commande 'psql -U postgres "base_Production"' et retourne la valeur de connexion, si la connexion est possible.

Par défaut, la connexion ne se fait pas et mon utilitaire me retourne que la base n'existe pas (car connexion impossible).
- le service tourne bien,
- le pgpass.conf est ok

Lorsque je tape cette instruction en ligne de commande depuis le répertoire bin de PostgreSQL : 'psql -U postgres "base_Production"' la connexion se fait bien > Je ne comprends pas pourquoi cela ne fonctionne pas depuis mon utilitaire ?


Si maintenant j'accède à PgAdmin, et j'ouvre ma base de données (sans saisie du mot de passe puisqu'il est déjà dans le pgpass.conf), alors mon utilitaire fonctionne et arrive bien à se connecter à la base de données.

> Je ne comprends pas d'où vient ce problème.

Si quelqu'un à des idées ???

Merci d'avance pour votre aide

Cordialement

Pied de page des forums

Propulsé par FluxBB