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
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 |