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 <[email protected]> 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