Re: CONEXIONES Y DESCONEXIONES

From: Fernando Romo <pop(at)cofradia(dot)org>
To: FLOR AVILA ELIAS <favila(at)ditelgroup(dot)com>
Cc: Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: CONEXIONES Y DESCONEXIONES
Date: 2019-06-06 20:51:31
Message-ID: A4A9BC24-B600-4381-9656-5E9A88D1C607@cofradia.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Al contrario, hacer conexiones y desconexiones es mas pesado que mantener conexiones persistentes

Dependiendo el leguaje de programación, hay manera de preparar por anticipado los querys.

Recuerda que cada query al ser enviado a postgresql pasa por un proceso de análisis sintáctico e interpretación, si eso lo repitas miles de veces, eso crea un overhead impresionante.

Por ejemplo (en perl usando DBI):

#!/usr/bin/perl
use strict;
use DBI;

my $dbh = DBI->connect("dbi:Pg:dbname=dbname;host=127.0.0.1", ‘usuario', ‘password');
$dbh->{PrintError} = 1; # Disable automatic Error Handling

open P, "< usd_historico.txt" || die "Can\'t open file\n";

$dbh->do("truncate table exchangerate;");

my $SQL_Code = "insert into exchangerate(curr,transdate,exchangerate) values('USD',?,?);";
my $sth_insert = $dbh->prepare($SQL_Code);

while(<P>) {
chomp;
my ($day, $month, $year, $tc) = $_ =~ /(.*)-(.*)-(.*)\|(.*)/;
my $date = "$year-$month-$day";
my $ret = $sth_insert->execute("$date",$tc);
}

close (P);

$dbh->disconnect;

Aquí inserto la historia de los tipos de cambio, pero hago que el analizador sintáctico de postgresql solo trabaje una vez e inserto algunos miles de registros.

La función “prepare()” manda a analizar el query. La función “execute()” invoca el handler y solo pasa parámetros a insertar.

Este tipo de acercamiento vuelve muy eficiente la inserción.

Saludos… El Pop

> On Jun 6, 2019, at 3:23 PM, FLOR AVILA ELIAS <favila(at)ditelgroup(dot)com> wrote:
>
> Buenas tardes,
>
> Tengo un aplicativo que me permite recibir las tramas de varios equipos GPS y grabar la informacion en una tabla Postgres, cabe indicar que en este proceso tambien se hacen select y update, quisiera que me aconsejen para disminuir los consumos (porque lei que mantenerse conectado a la BD consume recursos de memoria y procesador) :
> 1. Abrir la BD hacer los select e insert y update y al final de cada trama cerrar?
> 2. Abrir la BD hacer el select y cerrar, abrir la BD hacer el insert y luego cerrar y abrir la BD hacer el update y luego cerrar?
>
> Tengan en consideracion que este proceso es de por lo menos 60 registros cada segundo.
>
> Muchas gracias de antemano,
> Flor Avila

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2019-06-07 10:46:14 Re: Perdida de flujo replicacion
Previous Message FLOR AVILA ELIAS 2019-06-06 20:46:40 Re: CONEXIONES Y DESCONEXIONES