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 <fav...@ditelgroup.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

Reply via email to