Re: Backup postgres

2024-08-20 Thread Alvaro Herrera
Fredy Hurtado escribió:
> Buenas tardes,
> 
> Estoy generando un backup en Postgres 15.7 sobre Debian 12 y al momento de
> lanzarlo, me aparece este error:
> 
> pg_dump: error: la consulta falló: ERROR:  no se pudo leer el bloque 0 del
> archivo «base/36094/3119»: Error de entrada/salida

Ese error viene del sistema operativo, y muy probablemente indica que
uno de tus discos está muriendo.

3119 es un índice en el catálogo de sistema pg_foreign_table.  Quizás
puedas recuperar esto haciendo REINDEX TABLE pg_foreign_table en la base
de datos afectada, aunque nunca se puede saber si no tienes corrupción
en alguna otra parte, especialmente en archivos con datos de tabla.
Recomendaría que saques tus datos de esa máquina, o de ese disco, para
restaurarlos en una máquina confiable, antes de seguir operando.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"La vida es para el que se aventura"




Re: Creación de una replica adicional

2024-08-15 Thread Alvaro Herrera
Horacio Miranda escribió:
> Hola cual es la retención que tienes del wall ?
> 
> |wal_keep_size es un valor que deberias ajustar para poder retener los wall
> necesarios para replicar ambos targets.

Eso no es relevante; no es responsabilidad del primario guardar el WAL.
Por eso está la opción -Xs de pg_basebackup.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"This is a foot just waiting to be shot"(Andrew Dunstan)




Re: Creación de una replica adicional

2024-08-15 Thread Alvaro Herrera
Hola,

Elizabeth Fernandez escribió:

> El comando que he utilizado para la creacion de la replica es:
> pg_basebackup -h  -p 5432 -D   -U  -Fp -P
> -v -R -Xs --checkpoint=fast -C -S 
> Hasta ahora cuando lo he utilizado ha funcionado. Esta semana traté de
> crear la 2da replica, pero cuando finalizó el pg_basebackup y se ejecutó el
> start de la base de datos, el log indica que requiere hacer el streaming de
> un WAL del servidor primario y el mismo ya fue eliminado.

Hmm, el problem NO es que el WAL haya sido eliminado, porque el archivo
ya está en el pg_wal de la réplica.  El problema es que al leer ese WAL
que estaba en la réplica, ocurrió este error:

> 2024-08-15 06:42:40.087 EDT [127391] LOG:  incorrect resource manager data 
> checksum in record at 53A7/4570AA10

Por alguna razón, el nuevo servidor no está interpretando correctamente
el WAL.  ¿Son paquetes de la misma fuente, de la misma versión, en el
mismo sistema operativo?

(El mensaje de que el WAL ya fue eliminado, lo lanza porque una vez que
ocurre la primera falla, el standby no sabe qué más hacer aparte de
pedirle al primario que le envíe el WAL nuevamente; pero eso ya sabemos
que va a fallar, porque el primario no guarda todos esos días de WAL.
La opción -Xs de pg_basebackup se hace cargo de traer todo el WAL desde
el primario y ponerlo en el pg_wal de la réplica, antes de que el
primario lo borre.)

¿Tienes algún módulo o extensión que pudiera estar publicando WAL no
estándar?  Podrías intentar hacer pg_waldump de ese segmento en la
réplica, si es que todavía tienes el archivo.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/




Re: PSQL Dockerizado Productivo?

2024-07-11 Thread Alvaro Herrera
Federico Pascual escribió:

> No había escuchado experiencias de gente que utilice motores de base de
> datos en contenedores en entornos productivos; si otro tipo de
> infraestructura (aplicaciones).

Es nuevo.  Por ejemplo la iniciativa "Data on Kubernetes" es
relativamente nueva comparada con tener K8s para aplicaciones
"stateless".
https://dok.community/

Recomiendo darle una mirada a este:
https://github.com/cloudnative-pg/cloudnative-pg

-- 
Álvaro Herrera   48°01'N 7°57'E  —  https://www.EnterpriseDB.com/




Re: Archivado particularmente voluminoso.

2024-06-06 Thread Alvaro Herrera
Hola

Federico Pascual escribió:

> Tenemos una db que está generando una gran cantidad de archivado. Esto es
> que el archivado para un día en particular es muy voluminoso en comparación
> con lo que ocupa la db.

> En los logs tenemos por ejemplo la siguiente info:
> 
> 2024-05-27 22:06:17.353 -03 [2302] LOG:  empezando checkpoint: time
> 2024-05-27 22:11:17.128 -03 [2302] LOG:  empezando checkpoint: time
> 2024-05-27 22:16:17.078 -03 [2302] LOG:  empezando checkpoint: time

Esto evidencia que tienes checkpoint_timeout=5min, que es el valor por
omisión.  Quizás podrías cambiarlo a 20min o algo así, lo cual podría
disminuir la cantidad de WAL que se escribe y por lo tanto que se
archiva.

> 2024-05-27 22:20:46.803 -03 [2302] LOG:  checkpoint completado: se escribió
> 2690 buffers (0.8%); 0 archivo(s) WAL añadido(s), 0 eliminado(s), 3
> reciclado(s); escritura=269.697 s, sincronización=0.005 s, total=269.726 s;
> archivos sincronizados=213, más largo=0.004 s, promedio=0.001 s;
> distancia=46373 kB, estimado=50915 kB

Acá se reciclaron 3 segmentos de WAL, que son 48 MB; en todos tus
checkpoints parece ser la misma cantidad.  No me parece un número
gigante la verdad ... digamos que es bastante modesto.  Prueba a hacer
"pg_waldump -z" para mostrar un resumen por tipo de resource manager y
full-page writes del tráfico de WAL.  Si los FPW (o FPI) son mayoría,
entonces hacer menos checkpoints debido a cambiar el timeout podría
disminuir mucho el tráfico total de WAL también.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Estabilidad de la API interna

2024-04-05 Thread Alvaro Herrera
Mario González Troncoso escribió:

> Si funciona para 16.1, va a seguir funcionando para todas las 16.X que
> vengan. Aun mas, *podria* funcionar en las siguientes (Incluso
> anteriores) si es que las bibliotecas de libpq por ejemplo que estés
> usando mantengan la misma funcionalidad o no hayan cambiado el
> "signature" en las funciones. A medida de que tu extensión no se
> actualice a versiones futuras, digamos v18 o mayor, menor va a ser la
> certeza de que vaya a funcionar. En esos casos, IMO siempre es mejor
> volver a compilar y/o tener versiones para diferentes ramas.

No realmente -- entre cambios de versiones mayores, siempre tienes que
recompilar.  Esto es porque Postgres verifica que cada módulo que carga
tenga un bloque PG_MODULE_MAGIC, el cual incluye un número de versión
mayor; y se verifica que ese número de la biblioteca coincida con la
versión del servidor.

Es cierto que la recompilación puede ser limpia (es decir no necesitar
ningún cambio).

Sobre la pregunta de Daymel.  La ABI dentro de versiones *menores* se
trata de mantener lo más posible, y si bien todavía no tenemos
herramientas que lo verifiquen automáticamente, los committers son
muy cuidadosos en no introducir cambios, y cada vez hay más revisión de
que ese requisito se cumpla.  Por ejemplo en vez de cambiar la signatura
de funciones existentes, se prefiere agregar funciones adicionales
cuando ese necesario tener más argumentos o distintos; si hay que
agregar miembros a structs, se hace al final; si los structs se usan en
arrays no se pueden agregar miembros al final, se agregan structs
separados para lo que sea que necesites; los valores de los enums no se
reenumeran; y cosas así.

Como el PG_MODULE_MAGIC protege de que un módulo compilado para una
versión mayor anterior no funcione con una versión mayor nueva, todos
esos cambios se pueden hacer con tranquilidad en la rama master.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
 Are you not unsure you want to delete Firefox?
   [Not unsure] [Not not unsure][Cancel]
   http://smylers.hates-software.com/2008/01/03/566e45b2.html




Re: borrar y generar nuevamente cluster

2024-03-06 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Buen día estoy haciendo unas pruebas en ubuntu 22.04.2 y postgres 16.
> La instalación de postgres 16 siguiendo los pasos de
> https://www.postgresql.org/download/linux/ubuntu/ funciona perfecto.
> Este paquete deja instalado el postgres como un servicio en el sistema
> operativo, deja el usuario postgres ya creado y cluster main creado.
> La pregunta es: ¿Es posible generar nuevamente el cluster main sin volver
> instalar postgres y que queden funcionando las configuraciones (systemd,
> usuario, etc) que la instalación hace?

Debian/Ubuntu tienen un sistema propio de gestion de clústers (que si no
entiendo mal viene en el paquete postgresql-common), que permiten
múltiples clusters en múltiples versiones de Postgres corriendo
simultáneamente, para lo cual se usan los programas pg_createcluster,
pg_lsclusters, pg_dropcluster, pg_ctlcluster.  Te recomiendo
familiarizarte con ellos y usarlos para estas tareas, en lugar de tocar
los directorios de datos manualmente.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"Las cosas son buenas o malas segun las hace nuestra opinión" (Lisias)




Re: Costes en subconsulta sencilla

2024-02-12 Thread Alvaro Herrera
Ruben Fitó escribió:

> Tengo la siguiente query en postgresql que tiene un coste de casi un minuto:
> 
> EXPLAIN
> SELECT
>   mtx.oper_tipus,
>   mtx.oper_estat
> FROM
>   m_transaccions mtx
>   INNER JOIN comm_pax_transactions pax ON (mtx.num_operacio = pax.num_oper)
> WHERE
>   mtx.estacio = 333
>   AND mtx.oper_tipus IN ('F', 'f', 'P', 'p')
>   AND mtx.oper_estat IN (0, 1)
>   AND mtx.num_operacio >
> *COALESCE((  SELECT num_oper_end   FROM
> m_closures   WHERE station = 333   ORDER BY id DESC
>   LIMIT 1), 0  )*;

¿Probaste extrayendo el num_oper_end en una CTE?

WITH oper_end AS (select num_oper_end from m_closures ...)
select ...
from m_transaccions
inner join comm_pax_transactions ...
where mtx.num_operacio > coalesce( select bla from oper_end, 0);

Mira el explain y en caso de que Postgres decida volver el CTE como
parte de la consulta principal, prueba poniéndole MATERIALIZED al WITH
oper_end.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Configuración correcta de cron en Barman y mailes molestos.

2024-01-29 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Mario, muchas gracias por tu respuesta, lo que me dices es que es parte de
> crontab del sistema operativo y no de cron (procesos de barman) ?

Un buen script de cron tiene que saber leer el resultado de lo que se
ejecuta, y si todo termina bien, guardar el log silenciosamente sin
mandar nada por mail; y si termina mal, mandar el log por mail para que
el admin sepa que algo anda mal y que debe revisarse.

Puede ser algo tan simple como

8<8<8<8<-
#!/bin/sh

set -e
templog=$(mktemp)
trap "rm $templog" 0
/usr/bin/barman backup eprensa > $templog
if [ $? == 0 ]; then
exit 0
else
cat $templog
fi
8<8<8<8<-

y luego en el cron invocas con algo como 

MAILTO=guillermo...@gmail.com
0 14 * * 4 /home/guillermovil/bin/script_de_alvherre.sh

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"The eagle never lost so much time, as
when he submitted to learn of the crow." (William Blake)




Re: lista de stopwords

2024-01-08 Thread Alvaro Herrera
Anthony Sotolongo escribió:
> 
> SELECT
> unnest(string_to_array(pg_read_file('/usr/share/postgresql/'||current_setting
> ('server_version_num')::varchar(2)||'/tsearch_data/spanish.stop'),E'\n'))
> as stopwords;

(Esta query no funciona en el caso general: la ubicación del directorio
de instalación no es obtenible desde dentro de una sesión)

[ ... mirando el archivo ... ]

Uy, esta lista es desastrosa, tiene algunos typos Orribles [sic] como

vosostras
vosostros

y algunas palabras mal consideradas como

tenida
tenidas

que supongo pretenden ser conjugaciones del verbo tener, pero también
tienen otro significado, que a mi parecer las descalifican como
stopwords ...

Más generalmente me doy cuenta que este archivo no ha cambiado desde el
commit original en 2007 (140d4ebcb46e).  También me doy cuenta que en
snowballstem.org (el proyecto upstream de nuestros stemmers) no hay nada
sobre stopwords, así que me imagino que las listas vinieron de algún
otro lado ... pero no encuentro dónde.

Existe esto
https://github.com/stopwords-iso/stopwords-es
que aparentemente viene de Snowball.

-- 
Álvaro Herrera   48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"The ability of users to misuse tools is, of course, legendary" (David Steele)
https://postgr.es/m/11b38a96-6ded-4668-b772-40f992132...@pgmasters.net




Re: Alto consumo de procesador

2024-01-08 Thread Alvaro Herrera
Fernando Siguenza escribió:
> Amigos, su ayuda porfa tengo un servidor en debian con postgres ejecutando un 
> sistema en php, estaba funcionando bein pero desde el viernes veo que el 
> consumo del procesador esta altisimo y es por los procesos del postgres

Ugh, suena a que tienes un cryptominero, algo como 
https://unit42.paloaltonetworks.com/pgminer-postgresql-cryptocurrency-mining-botnet/

Condolencias,

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"La primera ley de las demostraciones en vivo es: no trate de usar el sistema.
Escriba un guión que no toque nada para no causar daños." (Jakob Nielsen)




Re: no se pudo recibir datos del cliente: Conexión reinicializada por la máquina remota

2023-12-18 Thread Alvaro Herrera
mauricio pullabuestan escribió:

> La configuración del Servidor maestro para almacenar los wals.
> archive_mode = on
> archive_command = 'cp %p /var/lib/postgresql/9.6/main/archive/%f'
> 
> Es de este directorio donde borro los Wals.

Ah, ok.  Para eso te recomiendo usar pg_archivecleanup.

> No creo tener transacciones preparadas olvidadas o transacciones que
> nunca cerraron, con todo voy a revisar.

Si no tienes archivos de toda la eternidad en pg_xlog, entonces no es un
problema.

Nota, eso sí, que el archive_command que estás usando tiene varias
desventajas y podría causarte problemas a la larga.  No se recomienda
que manejes estas cosas tú mismo, porque es muy fácil hacerlas mal y
terminar corrompiendo datos.  Si esos WAL son para backups, te
recomiendo usar Barman --> www.pgbarman.org  Hay otras opciones para
hacer backups.  (Si no son para backups, entonces me pregunto para qué.)

Saludos

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: no se pudo recibir datos del cliente: Conexión reinicializada por la máquina remota

2023-12-17 Thread Alvaro Herrera
mauricio pullabuestan escribió:

> Los archivos Wal se borran del servidor primario, por una tarea
> programada mediante Cron que se ejecuta a 1:00, eliminando los
> archivos del día anterior,

¿desde el directorio pg_xlog?  Eso de borrar WALs de ahí es lo mismo que
suicidar tu base de datos.  Es un peligro y no deberías estarlo
haciendo.  Postgres borra esos archivos WAL por si mismo; si no lo está
haciendo y necesitas este horrendo y peligroso hack, es que tienes algo
mal configurado, como por ejemplo un slot de replicación inactivo, una
transacción preparada olvidada, o una transacción que nunca se cerró.
Verifica esas cosas y elimina ese cron jon.

-- 
Álvaro Herrera   48°01'N 7°57'E  —  https://www.EnterpriseDB.com/




Re: búsqueda en cadena de texto como en google

2023-12-13 Thread Alvaro Herrera
Juan José Santamaría Flecha escribió:
> On Wed, Dec 13, 2023 at 9:49 AM kernel  wrote:
> 
> > Tengo un campo varchar que contiene descripciones de libros, me gustaría
> > poder buscar por diferentes palabras, pero pueden estar en orden
> > distinto o solo contener algunas, no se si hay algo desarrollado o tengo
> > que hacer varias busquedas
>
> Lo que quieres hacer suena a búsqueda Full Text:
> 
> https://www.postgresql.org/docs/current/textsearch.html

Usando websearch_to_tsquery() posiblemente.  Puede ser necesario adornar
con la extensión unaccent.  Si tienes, por ejemplo, el titulo del libro
en una columna y la descripción en una columna separada, puedes crear un
índice que agrupa las palabras de ambas columnas, de manera que una
búsqueda encuentre cuando las palabras aparezcan en cualquiera de los
dos.  También puedes darle "pesos" distintos a las palabras en cada
columna (función setweight), de manera que si una palabra de la búsqueda
aparece en el título, el resultado te muestre ese libro antes que un
libro para el cual la palabra ocurre en la descripción.

Generalmente es bueno saber en qué idioma están los textos, para que
puedas decidir qué "stemming" usar.  Mi impresión es que para el español
esto funciona bien, pero no me ha tocado implementar aplicaciones de
verdad usando esta funcionalidad.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"After a quick R of TFM, all I can say is HOLY CR** THAT IS COOL! PostgreSQL was
amazing when I first started using it at 7.2, and I'm continually astounded by
learning new features and techniques made available by the continuing work of
the development team."
Berend Tober, http://archives.postgresql.org/pgsql-hackers/2007-08/msg01009.php




Re: Para las nuevas generaciones ¿Por qué aprender postgres?

2023-11-09 Thread Alvaro Herrera
Enrique Herrera Noya escribió:
>  me recuerdo haber implementado
> 
> nodo1 y nodo2 postgres , y con GFS2 montamos el directorio de la BBDD desde
> nodo 3

Esto suena a potencial mecanismo para corromper datos si algo llega a
salir mal, porque el bloqueo entre procesos no va a funcionar si el
directorio de datos está en una máquina distinta, y eso podría causar
que múltiples instancias en ejecución modifiquen los mismos datos
simultáneamente, creando inconsistencias.

Me tocó atender algún caso así con directorios de datos montados vía
NFS, hace muchos años atrás.

> y como alternativa a RAC, me recuerdo postgresql XL

Ese proyecto murió hace tiempo.  La última versión publicada fue en
2019, basado en Postgres 10.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"Learn about compilers. Then everything looks like either a compiler or
a database, and now you have two problems but one of them is fun."
https://twitter.com/thingskatedid/status/1456027786158776329




Re: Error "public.powa_take_snapshot()" en el log de PostgreSQL

2023-10-09 Thread Alvaro Herrera
Pablo Delgado escribió:
> Tengo el siguiente error en mi log de PostgreSQL 12 y no llego a entender
> como solucionarlo:
> 
> 2023-10-07 16:03:06 UTC:LOG:  POWA connected to database powa
> 2023-10-07 16:03:06 UTC:ERROR:  query returned more than one row
> 2023-10-07 16:03:06 UTC:HINT:  Make sure the query returns a single row, or
> use LIMIT 1.
> 2023-10-07 16:03:06 UTC:CONTEXT:  PL/pgSQL function
> powa_take_snapshot(integer) line 31 at SQL statement
> SQL statement "SELECT public.powa_take_snapshot()"
> 2023-10-07 16:03:06 UTC:LOG:  background worker "powa" (PID 34049) exited
> with exit code 1

Hola, eso es un bug en un módulo externo llamado POWA.  Podrías intentar
desactivarlo, pero si te interesa continuar usando POWA, fíjate si los
desarrolladores han publicado una versión más reciente que contenga una
corrección a algún problema relacionado.

Aparentemente, lo que hay que hacer es quitar "powa" de la línea
shared_preload_libraries en postgresql.conf (o busca en `select * from
pg_settings` si ese parámetro viene desde algún otro archivo).  Luego
reinicia el servidor.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
Bob [Floyd] used to say that he was planning to get a Ph.D. by the "green
stamp method," namely by saving envelopes addressed to him as 'Dr. Floyd'.
After collecting 500 such letters, he mused, a university somewhere in
Arizona would probably grant him a degree.  (Don Knuth)




Re: Funciones Temporales en Postgres

2023-09-20 Thread Alvaro Herrera
Jose Mercedes Venegas Acevedo escribió:
> Buen dia a todos
> 
> Estoy intentando armar una funcion en postgres que utilizara parámetros y
> tablas distintas dependiendo del usuario que se conecta por ese motivo se
> me ocurrió que tal vez podria escribir un script que utilice algo asi como
> funciones temporales

create function pg_temp.funcion() ...;
select pg_temp.funcion() ;

Al desconectar, se borra.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
Tom: There seems to be something broken here.
Teodor: I'm in sackcloth and ashes...  Fixed.
   http://postgr.es/m/482d1632.8010...@sigaev.ru




Re: Optimizar Update

2023-09-08 Thread Alvaro Herrera
mauricio pullabuestan escribió:

> SET work_mem = '500MB';
> TRUNCATE item_bodega_pedidos_spp;
> COPY item_bodega_pedidos_spp FROM '/home/pasa_vfp_pg/bodega_migra.csv' 
> DELIMITER ',' CSV HEADER;

Asegúrate de hacer un ANALYZE después de insertar los datos en esta
tabla.


-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"It takes less than 2 seconds to get to 78% complete; that's a good sign.
A few seconds later it's at 90%, but it seems to have stuck there.  Did
somebody make percentages logarithmic while I wasn't looking?"
http://smylers.hates-software.com/2005/09/08/1995c749.html




Re: Optimizar Update

2023-09-08 Thread Alvaro Herrera
mauricio pullabuestan escribió:

> CREATE TABLE bodegas   /*la tabla es mucho más ancha*/
> (
> 
>   bodega character varying(3) NOT NULL,
>   item character varying(15) NOT NULL,
>   buffer numeric(12,3) DEFAULT 0,
>   pedidos_clientes numeric(12,3) DEFAULT 0,
>   comprometido_pedido numeric(10,3) DEFAULT 0,
>   CONSTRAINT pk_bodegas PRIMARY KEY (bodega, item),
>   CONSTRAINT fk_bodegas_id_bodegas FOREIGN KEY (bodega)
>   REFERENCES id_bodegas (bodega) MATCH FULL
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_bodegas_item FOREIGN KEY (item)
>       REFERENCES items (item) MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION
> )

¿tienes una llave foránea que dice que la bodega existe en la misma
tabla bodegas?  ¿es decir, la tabla se autoreferencia?  Suena medio
estúpido esto.  ¿Qué sentido tiene?

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"People get annoyed when you try to debug them."  (Larry Wall)




Re: alguna base de datos abierta

2023-08-09 Thread Alvaro Herrera
Enrique Herrera Noya escribió:

> me tope con un tema practico , como son varios teras desde el cual
> debo seleccionar la muestra, me demorare mas tiempo que el plazo de
> entrega de la maqueta, entonces, para armar la maqueta se me ocurrió
> que podría utilizar una bbdd abierta de algunos gigas, para utilizarla
> como insumo para mostrar los pasos que realizare  con la bbdd  a
> analizar.

Podrías crear una muestra aleatoria de la base de datos existente,
usando "SELECT FROM .. TABLESAMPLE" que hace una muestra aleatoria en
forma eficiente.  Con eso puedes extraer el tamaño que te convenga, lo
pones en una tabla aparte "de muestra".  Creo que eso sería más sencillo
que tratar de encontrar una base de datos de ejemplo que se ajuste a lo
que necesitas hacer.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Tabla TOAST muy grande

2023-07-28 Thread Alvaro Herrera
Diego Ayala escribió:
> buen dia Francisco, si, tienes razon, mi calculo esta mal, en realidad son
> 1.2MB por cada columna JSON 1,2MB x 545800=654.960MB que son 69 GB solo
> para esa columna, y el total de la tabla es 72GB, que corresponden al resto
> de las columnas.
> Usando esta función para estimar el tamaño total de esa columna
> 
> select pg_size_pretty(sum(pg_column_size(evento.datos))) FROM  pliego.evento

Eso suena más razonable.  Comprimir un JSON gigante a ~10% del tamaño
original podría ser creíble si suponemos que hay muchísima redundancia
en los datos.  Un JSON de 1.2MB seguramente debe ser un absoluto
desastre de diseño, así que una redundancia tan alta podría ser
alcanzable.

El otro número no tenía ningún sentido.  

> Estoy evaluando eliminar registros anteriores a 1 año para liberar espacio

Me imagino que cuando dices "eliminar" quieres decir "mover los datos
antiguos a otra tabla con información histórica".

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"The Gord often wonders why people threaten never to come back after they've
been told never to return" (www.actsofgord.com)




Re: Tabla TOAST muy grande

2023-07-27 Thread Alvaro Herrera
Diego Ayala escribió:
> si, es en la columna tipo json donde tengo el dato mayor,

¿qué tan grandes son esos objetos json?  Para llegar a 72 GB con 545800
objetos, cada uno de ellos tendría que ser de 141644 bytes.  Eso parece
un poco excesivo.  ¿No será que hay espacio desperdiciado en esa tabla?

Otra cosa: si estás haciendo respaldos solamente con pg_dump con una BD
de ese tamaño, podrías estar poniéndote en riesgo.  Te aconsejaría hacer
respaldos con pgBarman o pgBackrest.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Los trabajadores menos efectivos son sistematicamente llevados al lugar
donde pueden hacer el menor daño posible: gerencia."  (El principio Dilbert)




Re: Baja performance en inserts masivos con bytea

2023-06-10 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:

> Cómo los datos originales tenían una columna lo (large object) los tengo
> que pasar a bytea, para eso utilizo la función:
[...]

> El problema es que *demora muchísimo!!!* para hacer la primera vuelta de
> ciclo, es decir los primeros 1 registros demoró poco mas de 1 hora y la
> tabla tiene 2.5 millones de registros :-(

¿de qué tamaño es cada objeto?  Es posible que sea problema de compresión.  
Prueba con

ALTER TABLE tca_bytea ALTER COLUMN tca_texto SET STORAGE EXTERNAL;
https://www.postgresql.org/docs/9.2/sql-altertable.html

para evitar que intente comprimir los valores durante la inserción.  Eso
podría hacerlo mucho más rápido.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: error prev-link

2023-06-01 Thread Alvaro Herrera
kernel escribió:
> hola,
> 
> 
> Me he encontrado con este error en el servidor de respaldo, esta
> constantemente dando ele problema y esta desentronizado

Lo sacaron del trono, ¿eh?  Ojalá no lo hayan pasado por la guillotina
también.

> 2023-06-01 00:00:43.748 CEST [1273] LOG:  se ha restaurado el archivo
> «00010094008F» desde el área de archivado
> 2023-06-01 00:00:43.939 CEST [1273] LOG:  registro con prev-link 1803FF/CC
> incorrecto en 94/8F141388

¿qué versión de postgres es esta?  Es posible que necesites re-clonar el
standby, y actualizar tus servidores para conseguir esta corrección:

Author: Alvaro Herrera 
Branch: master Release: REL_15_BR [ff9f111bc] 2021-09-29 11:21:51 -0300
Branch: REL_14_STABLE Release: REL_14_1 [64a8687a6] 2021-09-29 11:41:01 -0300
Branch: REL_13_STABLE Release: REL_13_5 [1d97d3d08] 2021-09-29 11:21:51 -0300
Branch: REL_12_STABLE Release: REL_12_9 [1df0a914d] 2021-09-29 11:21:51 -0300
Branch: REL_11_STABLE Release: REL_11_14 [cfedb279a] 2021-09-29 11:21:51 -0300
Branch: REL_10_STABLE Release: REL_10_19 [d9fe2cc7d] 2021-09-29 11:21:51 -0300
Branch: REL9_6_STABLE Release: REL9_6_24 [148c6ee3b] 2021-09-29 11:21:51 -0300

Fix WAL replay in presence of an incomplete record

Physical replication always ships WAL segment files to replicas once
they are complete.  This is a problem if one WAL record is split across
a segment boundary and the primary server crashes before writing down
the segment with the next portion of the WAL record: WAL writing after
crash recovery would happily resume at the point where the broken record
started, overwriting that record ... but any standby or backup may have
already received a copy of that segment, and they are not rewinding.
This causes standbys to stop following the primary after the latter
crashes:
  LOG:  invalid contrecord length 7262 at A8/D9FFFBC8
because the standby is still trying to read the continuation record
(contrecord) for the original long WAL record, but it is not there and
it will never be.  A workaround is to stop the replica, delete the WAL
file, and restart it -- at which point a fresh copy is brought over from
the primary.  But that's pretty labor intensive, and I bet many users
would just give up and re-clone the standby instead.

A fix for this problem was already attempted in commit 515e3d84a0b5, but
it only addressed the case for the scenario of WAL archiving, so
streaming replication would still be a problem (as well as other things
such as taking a filesystem-level backup while the server is down after
having crashed), and it had performance scalability problems too; so it
had to be reverted.

This commit fixes the problem using an approach suggested by Andres
Freund, whereby the initial portion(s) of the split-up WAL record are
kept, and a special type of WAL record is written where the contrecord
was lost, so that WAL replay in the replica knows to skip the broken
parts.  With this approach, we can continue to stream/archive segment
files as soon as they are complete, and replay of the broken records
will proceed across the crash point without a hitch.

Because a new type of WAL record is added, users should be careful to
upgrade standbys first, primaries later. Otherwise they risk the standby
being unable to start if the primary happens to write such a record.

A new TAP test that exercises this is added, but the portability of it
is yet to be seen.

This has been wrong since the introduction of physical replication, so
backpatch all the way back.  In stable branches, keep the new
XLogReaderState members at the end of the struct, to avoid an ABI
break.

Author: Álvaro Herrera 
Reviewed-by: Kyotaro Horiguchi 
Reviewed-by: Nathan Bossart 
Discussion: https://postgr.es/m/202108232252.dh7uxf6oxwcy@alvherre.pgsql


-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Unsuscribe me

2023-01-20 Thread Alvaro Herrera
Isma Santacruz Vera escribió:
> Hello
> Could you please unsubscribe me?

Hecho.

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"How amazing is that? I call it a night and come back to find that a bug has
been identified and patched while I sleep."(Robert Davidson)
   http://archives.postgresql.org/pgsql-sql/2006-03/msg00378.php




Re: Manejo de privilegios en database y esquemas

2022-10-14 Thread Alvaro Herrera
xav...@datolibre.com escribió:

> Estimados amigos.

Hola!

> Lo que quiero es:
> 
>   * "chief" siempre tenga acceso (lectura y escritura) a todas las tablas
> que se creen en los esquemas operator0, operator1... y a su vez que pueda
> dar privilegios SELECT a otros usuarios.

Después del CREATE SCHEMA, dale [algo parecido a] un:

ALTER DEFAULT PRIVILEGES ON SCHEMA operator0 GRANT ALL PRIVILEGES ON TABLES TO 
chief;

>   * "operator0" ya tiene acceso (lectura y escritura) sobre todas las 
> tablas
> en el esquema operator0, pero quiero que sea capáz de otorgar privilegios
> SELECT a otros usuarios.

Hmm, creo que debería ser

ALTER DEFAULT PRIVILEGES IN SCHEMA operator0 GRANT SELECT ON TABLES WITH GRANT 
OPTION;

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/
"La grandeza es una experiencia transitoria.  Nunca es consistente.
Depende en gran parte de la imaginación humana creadora de mitos"
(Irulan)




Re: Pg 9.6 va ganandole a pg13 en performance test, que esta mal?

2022-07-14 Thread Alvaro Herrera
Carlos T. Groero Carmona escribió:

> Logre poner los tiempos de respuesta de 9.6 y 13 juntos en NewRelic y
> encontre que todo funciono un poco mas lento pero el mas critico fue
> postgres con un 27%, aproximadamente 90ms mas lento.

Es difícil sacar conclusiones de una medición tan gruesa (o al menos tan
inespecífica), pero yo me estaría preguntando si no hay un problema de
latencia de red entre máquinas que sea distinto entre las instancias que
levantas con 9.6 vs. las instancias que levantas con 13.  Entiendo que
dijiste que todo es automatizado, lo cual significa que las topologías
de red deberían ser equivalentes y por lo tanto tener las mismas
latencias.  Pero surge la pregunta si las instancias 9.6 son históricas
o fueron recién creadas, como las 13.

Por otra parte, es muy difícil de creer que Postgres se haya hecho "90
ms más lento" en forma pareja en todas las queries.  Pero si me dijeras
que hay unas cuantas consultas con CTE (cláusulas WITH) que son 1000x
más lentas que antes y que eso hace que el tiempo de ejecución promedio
sea mayor, eso es totalmente creíble y podría tener la solución sencilla
de agregar el modificador MATERIALIZED a la CTE.  Estos artículos son
relevantes:

https://paquier.xyz/postgresql-2/postgres-12-with-materialize/
https://www.depesz.com/2019/02/19/waiting-for-postgresql-12-allow-user-control-of-cte-materialization-and-change-the-default-behavior/

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"La espina, desde que nace, ya pincha" (Proverbio africano)




Re: Pg 9.6 va ganandole a pg13 en performance test, que esta mal?

2022-07-13 Thread Alvaro Herrera
Carlos T. Groero Carmona escribió:
> Hola a todos,
> 
> Estoy migrando de 9.6 a 13 y parte del proceso migratorio es hacer los test
> de performance atravez de la aplicacion y las funcionalidades mas
> importantes del systema.
> 
> Se nota una degradacion de un 16% en el throughput y un 25% en el tiempo de
> respuesta del systema cuando usamos pg13.

¿es una query específica que es más lenta, o es que todo el sistema está
más lento?

-- 
Álvaro HerreraBreisgau, Deutschland  —  https://www.EnterpriseDB.com/




Re: Optimización de consulta

2022-06-07 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:

> *product_.status = 1 and and product_.qty > 0*
> 
> provocan seq. scan y el mayor costo y tiempo de mi consulta
> la tabla product_ tiene 69300 filas
> status = 1 son 49500
> qty > 0 son 65700
> 
> el explain me dice:
> ->  Parallel Seq Scan on product_  (cost=0.00..19483.64 rows=19580
> width=30) (actual time=0.032..39.454 rows=15674 loops=3)
> Filter: ((qty > '0'::numeric) AND (status = 1))
>  Rows Removed by Filter: 7454
> 
> Si creo índices individuales o combinando ambas columnas no mejora, sigue
> haciendo seq. scan

La tabla es muy pequeña y las cláusulas son poco selectivas, así que el
seqscan ya es la mejor estrategia.  Pero prueba haciendo "set
enable_seqscan to 0" a ver si usando un índice anda más rápido (dudoso).
Si la tabla fuera muy grande y la fracción de registros que tienen
status=1 AND qty>0 es suficientemente pequeña, podría resultar en un
plan distinto/mejor.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Oh, great altar of passive entertainment, bestow upon me thy discordant images
at such speed as to render linear thought impossible" (Calvin a la TV)




Re: disponibilidad de la función sha512

2022-04-20 Thread Alvaro Herrera
kernel escribió:
> Hola,
> 
> Creo que la función sha512 esta disponible a partir de la versión 10.20
> 
> ¿hay alguna posibilidad de disponer de la función en versiones anteriores?,
> ¿alguna extensión?, ¿alguna función que pueda instalar?

Hola, en pgcrypto está la función digest que recibe como segundo
argumento el nombre del algoritmo:

$ select digest('hola hola', 'sha512');
   digest   


 
\x9f1857e99043f9e97b502c900fb8c84ece9cc7f942061e277c6f98bd7f736f011ad1b6c94659a3d631179bfdd8851f2b5ee9d8678404d2f40708f747d1f19037
(1 fila)


Mismo resultado obtienes en 14 (digo, para verificar):

$ select sha512('hola hola');
   sha512   


 
\x9f1857e99043f9e97b502c900fb8c84ece9cc7f942061e277c6f98bd7f736f011ad1b6c94659a3d631179bfdd8851f2b5ee9d8678404d2f40708f747d1f19037
(1 fila)



-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"No hay hombre que no aspire a la plenitud, es decir,
la suma de experiencias de que un hombre es capaz"




Re: Infierno de las comillas dobles en plpgsql

2022-01-28 Thread Alvaro Herrera
Francisco Olarte escribió:

> Tu problema parece el tipico del quote del quote del quote... que es
> un follon pero se suele resolver razonablemente usando distinatas
> comillas, de las que en sql hay infinitas usando $x$. Ahora no tengo
> acceso ha nada para probarlo pero yo probaria algo asi.

Buenísima la explicación.  Una pequeña aclaración ... las "comillas de
dólar" no son parte del lenguaje SQL, sino que son una extensión de
PostgreSQL, las inventó como concepto Tom Lane acá:
https://www.postgresql.org/message-id/flat/10291.1063374003%40sss.pgh.pa.us#5c10796bfe4e4632f140b4ef7e88799c

Y finalmente implementado por Andrew Dunstan acá:
https://www.postgresql.org/message-id/40225C1B.6020606%40dunslane.net
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=58e705320e0c9e691a3fd2bd544f375ee0ca23d6

El nombre "dollar quoting" se le ocurrió a Hannu Krosing:
https://www.postgresql.org/message-id/flat/1063572973.2412.16.camel%40fuji.krosing.net#eaccf882017da65bffbaa32a2137ed6a

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"I think my standards have lowered enough that now I think 'good design'
is when the page doesn't irritate the living f*ck out of me." (JWZ)




Re: pg_restore ERROR: unexpected message type 0x58 during COPY from stdin

2021-11-29 Thread Alvaro Herrera
Diego Ayala escribió:
> Gracias por la respuesta, espacio en disco no creo, por que tiene
> suficiente, estoy analizando los logs para ver donde se esta dando el
> problema.

A veces los equipos de red intermedios (routers, switches) se fastidian
cuando llevas una conexión con una transmisión muy grande.  Es muy
probable que sea el caso acá, te recomiendo revisar la red con mucho
cuidado.  Si no tienes ninguna otra opción para investigar, trata de
conectar el equipo que ejecuta el restore directo al servidor de BD; o
bien ejecuta el restore en el mismo servidor.

O incluso un detector de intrusiones o mecanismo de seguridad a nivel
del kernel.  Creo que una vez vi ese caso, con AppArmor me parece.

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/
"I must say, I am absolutely impressed with what pgsql's implementation of
VALUES allows me to do. It's kind of ridiculous how much "work" goes away in
my code.  Too bad I can't do this at work (Oracle 8/9)."   (Tom Allison)
   http://archives.postgresql.org/pgsql-general/2007-06/msg00016.php




Re: Error al usar la herramienta osm2pgrouting

2021-11-29 Thread Alvaro Herrera
Carlos Eduardo Gutierrez Uruenna escribió:
> Buen día para todos y todas.
> 
> En esta oportunidad quisiera acudir a ustedes dado que al usar la
> herramienta osm2pgrouting cuyo propósito está orientado a importar la capa
> de vías/carreteras de OSM para cualquier país; me devuelve unos errores
> como los siguientes:
> 
> 
>- 2021-11-26 00:12:47.525 -05 [13436] FATAL:  lo siento, ya tenemos
>demasiados clientes

¿Qué versión de Postgres estás usando?

"ya tenemos demasiados clientes" significa que tienes el máximo de
conexiones activas.  Puedes aumentar max_connections en postgresql.conf,
pero quizás necesites revisar por qué algunas conexiones no se estén
cerrando.

>- 2021-11-26 00:16:02.625 -05 [20536] LOG:  no se pudo recibir datos del
>cliente: unrecognized winsock error 10054

Hmm, ni idea de qué va esto.  10054 es un código de error de Winsock
("Connection reset by peer" o WSACONNRESET), pero no entiendo por qué no
se entrega un mensaje de error más legible.  Quizás
win32_socket_strerror() necesita adaptarse, o el código que lo está
invocando, aunque se supone que está específicamente para manejar estos
casos.

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/
"Tiene valor aquel que admite que es un cobarde" (Fernandel)




Re: Problema con pg_hba.conf tras cambio inesperado de IP

2021-11-29 Thread Alvaro Herrera
Yessica Brinkmann escribió:

> Bien, entonces, fui a modificar mi archivo pg_hba.conf para que reflejara
> la nueva IP que nosé porqué cambió, y poder seguir comunicándome entre las
> dos máquinas virutales, pero resulta que al cambiar mi archivo pg_hba.conf,
> igual no me funciona la conexión.

¿Hiciste "reload" en el servidor después de cambiar el archivo?  Los
cambios en los archivos de configuración no toman efecto hasta que lo
hayas hecho.  Posibles alternativas son ejecutar "pg_ctl reload", o
"SELECT pg_reload_conf()", o usar "systemctl postgresql reload", o
enviar una señal SIGHUP al proceso servidor principal (postmaster).

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Hola tengo una duda de performance.

2021-11-03 Thread Alvaro Herrera
Horacio Miranda escribió:
> Estoy revisando y no encuentro una respuesta clara sobre el tipo de
> texto TEXT para los siguientes casos.
> 
> Tengo entendido que el varchar en postgresql soporta 1G segun lo que
> estoy leyendo lo que no me queda claro es la penalización de
> performance cuando tengo TEXT y hago cast entre otras columnas de tipo
> varchar.

La representación física de ambos es la misma. La única diferencia es
que VARCHAR tiene que contar caracteres para saber en qué punto está el
corte; el único costo de rendimiento es hacer eso cuando es necesario.

> En Oracle los CLOB son un puntero a otra estructura que puede existir
> incluso en otro tablespace.

Suena como a un "large object", que también es un puntero (OID) a datos
que están almacenados en pg_largeobject.

Ahora, si haces
UPDATE tabla2 SET algún_varchar = algún_text_que_está_en_otra_tabla

entonces vas a tener dos copias del dato, una en cada tabla.

> no estoy seguro sobre TEXT, es posible si alguien tiene mas
> información sobre este tema sería genial saberlo.  Voy a seguir
> leyendo. 

Hmm, no se me ocurre qué recomendarte leer sobre este tema.  La
documentación de TOAST explica en qué casos se trata de hacer
compresión; si tus datos no son compresibles porque ya están comprimidos
(JPG, PDF, o un base64 de una imagen) entonces te conviene configurar la
columna para que no intente comprimir, porque va a perder mucho tiempo.
Si es texto natural, la compresión gana rendimiento por el hecho de
disminuir I/O.

> Estoy pensando para bases de datos grandes el performance como se
> mueve postgresql con CAST y TEXT.

El cast es una transformación sólo de metadatos, así que el costo en
rendimiento debería ser pequeño.  Ahora, si necesitas extraer substrings
de textos largos, considera guardarlos sin compresión, porque el acceso
es más eficiente.

-- 
Álvaro Herrera   39°49'30"S 73°17'W  —  https://www.EnterpriseDB.com/




Re: que considerar en un update de versión?

2021-10-29 Thread Alvaro Herrera
Jaime Casanova escribió:

> Álvaro y tu ya cubrieron todos los puntos, pero como no me quería quedar
> fuera de la conversación agregaré que esto es porque Centos 8 ya no
> existe fue reemplazado por Centos Stream. 
> 
> Centos Stream no es una versión para producción. Tampoco es una versión 
> en el sentido normal de la palabra, es una distribución en continuo cambio 
> (por eso el nombre stream) en el que se van a probar paquetes que luego 
> pasarán a los nuevos releases de RHEL.

Ahora, Enrique mencionó que va a migrar a Almalinux, que es precisamente
el clon de CentOS que pretende continuar lo que abandonará Redhat (y que
está apoyado por un buen puñado de otras empresas con interés en la
continuidad).  Lo único que me preocupa de ese plan es que Almalinux no
está en la lista de distribuciones soportadas por los repos de
yum.postgresql.org.  De todas formas, Almalinux tiene sus propios
paquetes de Postgres.

Saludos

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/




Re: que considerar en un update de versión?

2021-10-28 Thread Alvaro Herrera
Hola Enrique,

Enrique Herrera Noya escribió:

> en mi nuevo trabajo estoy llevando a cabo la migración de los servidores
> desde Centos 7.9 a Centos 8.4.
> 
> ya estoy por realizar la actualización en las maquinas con postgresql
> 
> estas maquinas tienen postgresql 9.2.24 y viendo cual tiene centos 8.4,
> tiene la versión 9.6.22 (ademas de las versiones 10,12 y 13)

Recuerda que existen repositorios Yum ofrecidos por el proyecto
PostgreSQL que tienen (casi) todas las versiones de Postgres para muchas
versiones de CentOS.  Tienes donde escoger.  https://yum.postgresql.org

> las BBDD son accedidas con sentencias SQL estandar, y no tienen ninguna
> definición compleja a nivel de tablas
> 
> mi duda es si la actualización a 9.6.22 seria "transparente" y sin impacto?

Puede que sí sea "transparente", pero como es un salto grande, yo no lo
haría sin antes verificar.  Es decir, haz un upgrade de prueba en un
servidor experimental, le instalas la aplicación, y verifica el
funcionamiento de toda la funcionalidad, o al menos las partes más
importantes.  Si algo falla, puedes corregirlo antes de hacer el upgrade
de verdad.

Sospecho que lo primero que vas a notar es que varias cosas serán mucho
más rápidas en Postgres 13 que en 9.2.

> (mi idea es primero llevarla a 9.6.22 y luego a la versión 13)

Eso no es necesario ... con pg_upgrade puedes hacer el salto de una sola
vez, y te ahorras trabajo.

> Nota: posterior a eso la idea es realizar el cambio desde Centos hacia
> Almalinux

Hmm, desconozco Almalinux. No sé si hay paquetes.

Saludos

-- 
Álvaro Herrera   39°49'30"S 73°17'W  —  https://www.EnterpriseDB.com/




Re: upgrade 9.2 a 13

2021-10-12 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Buenas! ¿Es posible utilizar la herramienta pg_upgrade en un solo paso para
> pasar de un opensuse 12 con postgresql 9.2 a un centos 8 con postgresql 13?
> cada uno en VM diferentes dentro de la misma red local.

Puedes usar pg_upgrade para ir de 9.2 a 13 en un solo paso, pero
necesitarás un paso separado para mover el directorio de datos
resultante de una VM a otra.

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/
"Uno puede defenderse de los ataques; contra los elogios se esta indefenso"




Re: Consulta migracion

2021-09-24 Thread Alvaro Herrera
Ivan Perales M. escribió:
>  Y que pasa si haces un pg_dump (en modo insert o copy) y luego importas
> con un psql, es recomendable?

El formato de texto es menos flexible, pero si lo único que te importa
es restaurarlo una única vez, funciona bien (de hecho, es exactamente lo
mismo que tomar un pg_dump -Fc y darle inmediatamente un pg_restore a
salida de texto).  La ventaja de los formatos "custom" y "directory" es
que tienes mucha flexibilidad con lo que puedes hacer con ellos después.

El modo insert no se recomienda a menos que quieras pasar los datos a un
motor distinto.  Los INSERT son SQL estándar, en cambio el COPY no lo es.

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/
"Linux transformó mi computadora, de una `máquina para hacer cosas',
en un aparato realmente entretenido, sobre el cual cada día aprendo
algo nuevo" (Jaime Salinas)




Re: Consulta migracion

2021-09-24 Thread Alvaro Herrera
Horacio Miranda escribió:
> 
> On 25/09/2021 3:00 am, Boriss Mejias wrote:
> > Saludos Cesar,
> > 
> > Un pequeña observación que a lo mejor ya sabes, pero nunca está demás
> > repetirlo... nunca está demás repetirlo
> > 
> > Cuando tomes el pg_dump, asegúrate que uses el pg_dump de la version 13,
> > y no el pg_dump de la versión 9.2. Si no, podrías tener problemas al
> > importar en la nueva versión.
> > 
> No estoy de acuerdo con esto.
> 
> Export de 9.2 usas el pg_dump del 9.2
> 
> Import a 12, usas el pg_restore del 12.

N NO HAGAS ESO, NO RECOMIENDES ESO!  Haz lo que te dijo Boriss, es
lo mejor.  pg_dump es compatible hacia atrás.

-- 
Álvaro Herrera PostgreSQL Developer  —  https://www.EnterpriseDB.com/




Re: Consulta migracion

2021-09-23 Thread Alvaro Herrera
ce...@cayter.com escribió:
> Buenas tardes a todos, atiendo una pequeña empresa (con sus
> limitaciones...), que está utilizando PostgreSQL versión 9.2 , sobre W10
> pro, obviamente muy atrasados..., me piden la reinstalacion en una nueva PC
> con el mismo SO y la consulta es si puedo migrar las tablas tomando backup
> con pg_dump de la nueva version, digamos 13.4.1 y restaurarlas en la nueva
> instalación.

Sí, se supone que eso funciona bien.

> puedo tener problemas de incompatibilidad en la grabación y lectura de
> las mismas ?

No deberías tener ninguno.  Asegúrate de que han probado las
aplicaciones con Postgres 13, eso sí, porque puede haber
incompatibilidades ...

-- 
Álvaro Herrera  Valdivia, Chile  —  https://www.EnterpriseDB.com/
"I can see support will not be a problem.  10 out of 10."(Simon Wittber)
  (http://archives.postgresql.org/pgsql-general/2004-12/msg00159.php)




Re: Réplicacion de PostgreSQL a mysql no trigger

2021-06-28 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola lista
> 
> Tiempo sin escribir! resulta que tenemos que enviar los datos de unas
> tablas de PostgreSQL a mysql de forma permanente (como réplicacion lógica
> pero al motor mysql) la versión de PostgreSQL es 11 aunque se podría subir
> a 13, ya he investigando pero de las opciones free quizas symmetricDS es de
> las más conocidas pero hace esto con trigger (hasta donde pude ver) y la
> verdad esperaría que pudiera hacerse con la réplicacion (lógica) pues para
> no afectar desempeño de las operaciones DML en PostgreSQL, que alternativas
> ahí para esto.

Hola Hellmuth, quizás una opción podría ser el wal2json, y hacer un
programa pequeño que consuma el JSON que emita para alimentar el MySQL.

Saludos

-- 
Álvaro Herrera   Valdivia, Chile
"But static content is just dynamic content that isn't moving!"
http://smylers.hates-software.com/2007/08/15/fe244d0c.html




Re: Attach tabla con datos a partición nativa

2021-05-03 Thread Alvaro Herrera
Hellmuth Vargas escribió:

> bash-4.1$ du  --max-depth=1
> 16  ./log
> 16  ./pg_logical
> 4   ./pg_commit_ts
> 1616756 ./base
> 28  ./pg_multixact
> 4   ./pg_serial
> 12  ./pg_subtrans
> 12  ./pg_notify
> 4   ./pg_tblspc
> 1900552 ./pg_wal

Una cosa que no me había dado cuenta es que estás midiendo el tráfico de
WAL según la cantidad de espacio que ocupa pg_wal.  Eso no es muy
certero, o mejor dicho es fácil equivocarse, porque si bien estás
ejecutando checkpoints manualmente en tu prueba, igual podría pasar que
el sistema haga un checkpoint a medio camino.  Es más seguro obtener un
LSN con "SELECT pg_current_wal_insert_lsn()" antes y después, y restar
los valores.  Eso te da la cantidad en bytes de WAL que se genera
durante el experimento, con total seguridad.

Saludos

-- 
Álvaro Herrera39°49'30"S 73°17'W
"No tengo por qué estar de acuerdo con lo que pienso"
 (Carlos Caszeli)




Re: Attach tabla con datos a partición nativa

2021-05-03 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola Avaro
> 
> Hice el correspondiente laboratorio en una instancia dedicada de PostgreSQL
> 11.11, uno con una tabla "padre" con primariy key definido y otra con tabla
> "padre" sin el primary key, aqui los resultados

Eh, me expresé mal (error de cafeína insuficiente). Lo que yo quería
sugerir es que en la *partición* crearas el índice antes de hacer el
ATTACH.  Eso lo puedes hacer con CONCURRENTLY.  Al momento de hacer
ATTACH, el sistema va a detectar que el índice que necesita ya existe y
entonces no necesita crearlo.  Eso sí, tiene que ser un índice con
exactamente las mismas propiedades que el que está en la tabla padre.

-- 
Álvaro Herrera39°49'30"S 73°17'W




Re: Attach tabla con datos a partición nativa

2021-05-03 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola Álvaro
> 
> El dom., 2 de mayo de 2021 10:00 p. m., Alvaro Herrera <
> alvhe...@alvh.no-ip.org> escribió:
> 
> > Hellmuth Vargas escribió:
> >
> > > La instrucciones que ejecute básicamente fueron:
> > >
> > > CREATE TABLE llamadas (
> > >campos
> > > ) PARTITION BY RANGE (fecha);
> >
> > ¿hay índice o PK en estos campos?
> 
> Si señor,  PK
> 
> CREATE TABLE llamadas (
> id bigserial not null,
> fecha timestamp,
> constraint pk_llamadas primary key (id, fecha)
> ) PARTITION BY RANGE (fecha);

Prueba creando el índice en las tablas antes de hacer el attach. (No
recuerdo si basta con CREATE UNIQUE INDEX o es necesario ADD PRIMARY
KEY).

-- 
Álvaro Herrera39°49'30"S 73°17'W
"En las profundidades de nuestro inconsciente hay una obsesiva necesidad
de un universo lógico y coherente. Pero el universo real se halla siempre
un paso más allá de la lógica" (Irulan)




Re: Attach tabla con datos a partición nativa

2021-05-02 Thread Alvaro Herrera
Hellmuth Vargas escribió:

> La instrucciones que ejecute básicamente fueron:
> 
> CREATE TABLE llamadas (
>campos
> ) PARTITION BY RANGE (fecha);

¿hay índice o PK en estos campos?  ¿qué versión de Postgres?


-- 
Álvaro Herrera   Valdivia, Chile
"I must say, I am absolutely impressed with what pgsql's implementation of
VALUES allows me to do. It's kind of ridiculous how much "work" goes away in
my code.  Too bad I can't do this at work (Oracle 8/9)."   (Tom Allison)
   http://archives.postgresql.org/pgsql-general/2007-06/msg00016.php




Re: ERROR: las tablas declaradas WITH OIDS no está soportado

2021-04-22 Thread Alvaro Herrera
Micky Khan escribió:
> Buenos Dias.

Hola Micky,

> Estaba pasando mi base de datos de la version 9.X a la 13.2 y me
> salieron estos "errores".. a que se debe ???
> 
> Restoring started
> Creating database sigtext...
> Done
> Executing script G:\KJKJKJK.sql...
> ERROR:  las tablas declaradas WITH OIDS no está soportado
> ERROR:  las tablas declaradas WITH OIDS no está soportado

Esto puede ser fácil: edita el .sql y borra el WITH OIDS de todas
partes.

O puede ser difícil: si alguna de tus tablas depende de que haya OID,
entonces algo va a dejar de funcionar cuando hagas eso.  No es muy
probable que eso pase, pero depende de qué tan astuto fue tu yo-anterior.

> Hay alguna forma en todo caso de hacer un backup y restaurarlo sin
> problemas o como se puede corregir.

Una opción es usar el pg_dump de 13.2 para conectarte a la base de
datos y extraer el backup.

-- 
Álvaro Herrera39°49'30"S 73°17'W




Re: Particionar o no Particonar

2021-04-11 Thread Alvaro Herrera
Edwin De La Cruz escribió:

> Ahora, me veo en la necesidad de instalar esa aplicación para un
> cliente cuya infraestructura dispone de un servidor con PostgreSQL 10.
> Mi aplicación la tengo bajo PostgreSQL 12.
> El cliente no puede actualizar versión.

Estoy de acuerdo con lo que dijo Iván Perales.  La licencia de Postgres
es muy barata como para intentar ahorrar en la cantidad de servidores
con PostgreSQL que puedas tener.  En última instancia (es decir si tu
cliente no es capaz ni de comprar otro servidor), puedes instalar ambas
versiones de Postgres en el mismo servidor, en puertos distintos.
Tratar de modificar toda tu aplicación para que funcione con una versión
de Postgres prácticamente obsoleta (porque eso es lo que es, en 2021,
Postgres 10) te va a traer una gran cantidad de dolores de cabeza, y
ganancias mínimas.  Lo más probable es que la funcionalidad X resulte
lenta, y el cliente va a querer que la hagas más rápida.

-- 
Álvaro Herrera39°49'30"S 73°17'W
"I can see support will not be a problem.  10 out of 10."(Simon Wittber)
  (http://archives.postgresql.org/pgsql-general/2004-12/msg00159.php)




Re: Consulta extract year

2021-03-25 Thread Alvaro Herrera
Romero, Fernando escribió:
> Hola Guillemo gracias por tu respuesta.
> Ya lo resolvi, la tabla existe pero me tira ese esrror el extrac, lo resolvi 
> con otra query.
> Lo que tengo pendiente es borrar los registros, me da error el join
> 
> => delete from logpack_orderstatehistory as a
> join logpack_sheetorderhistory as b on a.id = b.id
> where a.created BETWEEN '2018-01-01' AND '2018-12-31';
> ERROR:  syntax error at or near "join"
> LINE 2: join logpack_sheetorderhistory as b on a.id = b.id

> No encuentro la forma de poner ese join en el delete.

Me parece que lo que necesitas es

DELETE FROM logpack_sheetorderhistory USING logpack_sheetorderhistory
WHERE ...


-- 
Álvaro Herrera   Valdivia, Chile
"Entristecido, Wutra (canción de Las Barreras)
echa a Freyr a rodar
y a nosotros al mar"




Re: Consulta borrar registros en cascada

2021-03-03 Thread Alvaro Herrera
Romero, Fernando escribió:
> Hola como estan, mi consulta es la siguiente...
> Puedo borrar registros por año? estoy intentando y me da error, vengo
> de mysql y ahí con la opción "where year(tabla)=año" borro todo ese
> año.

Obvio, pero la sintaxis puede ser diferente.  Quizás
"where extract('year' from tabla)"

... suponiendo que tu columna con fechas se llame "tabla", que me parece
algo absurdo, pero tu ejemplo es así ...

Es buena idea mostrar qué error da.

-- 
Álvaro Herrera   Valdivia, Chile
"El miedo atento y previsor es la madre de la seguridad" (E. Burke)




Re: Problema con pgbench y versiones de Postgresql.

2021-02-22 Thread Alvaro Herrera
Yessica Brinkmann escribió:
>Muchas gracias por la respuesta. Justamente estoy trabajando con
>máquinas virtuales. Y en realidad necesito ejecutar el pgbench en la
>máquina virtual en la que estoy trabajando con la versión 8.3.23, ya
>que es justamente para trabajar con mi tesis. Y la versión 9.6 creo que
>se instaló por defecto al usar el comando mencionado para instalar.

pgbench es una aplicación cliente, que puede comunicarse a través de la
red con el servidor.  Mi sugerencia es que no necesitas ejecutar pgbench
en la misma máquina.

-- 
Álvaro Herrera   Valdivia, Chile




Re: Problema con pgbench y versiones de Postgresql.

2021-02-22 Thread Alvaro Herrera
Yessica Brinkmann escribió:
> Buenos días.
> Estoy usando Postgresql 8.3.23 sobre Debian 9.x.
> Aclaro que estoy obligada a usar dicha versión de Postgresql debido a que
> estoy realizando una tesis de la universidad. Por este motivo me sería
> imposible cambiar de versión de la base de datos.
> Bien, yo estoy tratando de usar el pgbench para evaluar el rendimiento de
> una base de datos Postgresql.

Hola, te sugiero usar dos máquinas distintas: en una se ejecuta el
servidor, con todo el software que necesitas para la versión 8.3, y en
otra se ejecuta el programa pgbench, con la versión que sea (no sé por
qué escogiste 9.6; mi sugerencia es usar lo que sea que Debian instale
por defecto).  Así no te vas a complicar tanto con el asunto de las
dependencias incompatibles entre paquetes.

(Las máquinas podrían ser virtuales.)

Saludos

-- 
Álvaro Herrera39°49'30"S 73°17'W
"El hombre nunca sabe de lo que es capaz hasta que lo intenta" (C. Dickens)




Re: Limite en intentos fallidos de login.

2021-01-18 Thread Alvaro Herrera
Martín Marqués escribió:
> Interesante. No habia pensado en el uso de fail2ban.
> 
> La desventaja de este metodo es que bloque el IP, por lo que, si son
> varios usuarios que se authentican desde el mismo IP quedarían todos
> bloqueados y no solo el que super el limite de intentos.

No necesariamente.  Fail2ban es parametrizable y tú puedes configurar
qué acción ejecutar al ocurrir un ban. No lo he intentado pero debería
ser posible hacer "psql -c 'alter user foobar ...'" o algo por el
estilo.


-- 
Álvaro Herrera   Valdivia, Chile
"La libertad es como el dinero; el que no la sabe emplear la pierde" (Alvarez)




Re: porque no emplea indice para algunas funciones agregadas (max,min)

2021-01-15 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola Alvaro
> 
> Mil gracias por la respuesta, pues valdría la pena apoyar el parche porque
> sera una forma rápida de obtener algunas funciones agregadas (máximos,
> mínimos) agrupados por "categorias" directamente desde un indice asociado
> el cual si esta ordenado debe debería resolverlo rápidamente este tipo
> de  consultas son muy comunes... que opinan?

Hola, estaba mirando el archivo de la lista por otras razones y vi este
mensaje.  Pensé que sería buena idea comentar que el parche que
mencionaba en ese momento fue incluido en Postgres 13, por si aún no te
has subido de versión, para que veas qué tal te funciona.

Saludos

PD: 
http://postgr.es/m/flat/can3qy4pfnu0pfhbgf8nanjzc5vddzjoyepd7cmuprbgwb3_...@mail.gmail.com
por si no tienes los mails de ese tiempo

-- 
Álvaro Herrera39°49'30"S 73°17'W
"Saca el libro que tu religión considere como el indicado para encontrar la
oración que traiga paz a tu alma. Luego rebootea el computador
y ve si funciona" (Carlos Duclós)




Re: Consulta sobre Json o jsonb

2020-11-15 Thread Alvaro Herrera
Silvana Flores escribió:
> hola a todos esperando que se encuentren bien, les quiero solicitar
> información, he estado  leyendo sobre los tipos de datos json y jasonb,
> tengo una consulta que no he logrado llegar a aclarar,   estos tipos de
> datos se han creado con el objetivo de  almacenar datos tipo BD nosql  o
> para 'saltar' implementar un  werbservice para consultar la bd en
> aplicaciones web o dispositivos móviles. Si alguien me puede recomendar un
> link para  para orientar  se lo agradeceria...

Puedes almacenar en la base de datos los datos JSON que le enviarás a
los dispositivos, aunque se asume que tienes una aplicación que es la
que interactúa con los dispositivos.  Conectar un móvil directamente a
una BD sería una locura, creo yo, aunque creo que no es imposible.




Re: Consulta lenta

2020-10-20 Thread Alvaro Herrera
Jairo Graterón escribió:

> explain  select max(id) from invoices where num_ruc='20524953189';
> QUERY PLAN
> 
> ---
>  Result  (cost=474.18..474.19 rows=1 width=8)
>InitPlan 1 (returns $0)
>  ->  Limit  (cost=0.57..474.18 rows=1 width=8)
>->  Index Scan Backward using invoices_pkey on ose_ticket
>  (cost=0.57..8389569.35 rows=17714 width=8)
>  Index Cond: (id IS NOT NULL)
>  Filter: ((num_ruc)::text = '20524953189'::text)
> (6 rows)
> 
> El campo num_ruc está indexado pero el motor decide que usa el índice del
> id y busca con filter el num_ruc

Muestra el \d de la tabla.





Re: Consulta lenta

2020-10-14 Thread Alvaro Herrera
Jairo Graterón escribió:

> Ahora tenemos una consulta lenta que está afectando el rendimiento en el
> sistema

y cual era la consulta?

Lo que me parece mas sospechoso es que los literales de la columna
fecha_de_emision son timestamp without time zone. Quizas estas pasando
el tipo de dato equivocado en esa columna y por eso no usa ningun
indice.  Es JDBC esto?  o sentencias preparadas?

Saludos






Re: Tabla con particionado y alta cantidad de UPDATE

2020-10-13 Thread Alvaro Herrera
Edwin De La Cruz escribió:

> Voy a explicar de forma ańaloga como funciona el ingreso de datos,
> pensemos en un sistema de alarma:
> 1) Cuando se abre una puerta se genera un evento de "alarma".
> 2) Ahora cuando se cierra la puerta se genera un evento de
> "Restauración de alarma", lo cual cancela ("ACTUALIZA EL ESTADO")  del
> evento anterior.

Hm, yo apoyo lo que dice Jaime, a saber, que el diseño no es el adecuado.
Sugiero pasar un par de horas pensando en un diseño que te permita
implementar tus necesidades sin requerir estas operaciones de doble
efecto.

Hay modificaciones al motor Postgres que todavía están pendientes para
que tablas particionadas tengan rendimiento parecido a tablas normales.
Algunas están en pg11, otras en pg12 y 13, pero todavía hay propuestas
en pg14.  Lo que trato de argumentar es que no esperes que el
rendimiento con tablas particionadas sea equivalente, porque mientras
esas optimizaciones no estén, no lo es.






Re: Interfaz de usuario del Index Adviser de Gurjeet Singh.

2020-10-09 Thread Alvaro Herrera
Yessica Brinkmann escribió:

> Pueden leer acerca del tema en el link siguiente:
> https://github.com/gurjeet/pg_adviser/blob/master/index_adviser/README.index_adviser
> El caso es que para poder usar dicha interfaz primeramente debo instalarla.
> Y tiene un Makefile.
> Yo traté de instalar, pero me aparecen los siguientes errores:
> root@debian:/home/yessica/Descargas/postgresql-8.3.23/contrib/pg_adviser_master/pg_advise#
> USE_PGXS = 1 make

Hola, es difícil encontrar paquetes para Postgres 8.3 porque es
demasiado antiguo.  Pero si realmente quieres usar el Postgres 8.3 que
tienes instalado, no necesitas instalar ningún paquete; basta con hacer
que el ejecutable pg_config de tu instalación esté disponible en el PATH
para que el "make" lo pueda encontrar.  Es decir, tienes que hacer

export PATH=$PATH:/usr/local/bin/

donde el "/usr/local/bin" puede ser alguna otra ruta donde
estén los ejecutables de postgres 8.3 que ya instalaste.

Luego ejecuta el make
make USE_PGXS=1
y debería funcionar.




Re: performance de ejecucion de triggers hay alguna penalidad este es mi caso

2020-10-09 Thread Alvaro Herrera
Jose Mercedes Venegas Acevedo escribió:

> Estoy moviendo mi BD a postgres 13 y estoy aprovechando para hacer algunos
> ajustes actualmente tengo un conjunto de triggers comunes para unas 250
> tablas que clasifican objetos geométricos el tema es que estas asignaciones
> automaticas estan empezando a crecer porque tengo casos en los que ejecuto
> digamos hasta 12 trigers por cada insercion de registro y como se trata de
> informacion geografica en ocasiones se insertar en numeros de miles de
> registros.

Hola José, en general no vale la pena optimizar multiples triggers para
convertirlos en uno solo, asumiendo que son triggers BEFORE que
modifican NEW, es decir no estás haciendo reales UPDATE en el trigger
sino modificando el registro en memoria.  Seguramente si haces un
"micro-benchmark" vas a poder medir una diferencia de llamar un trigger
que hace 5 cosas en vez de cinco triggers que hacen una cosa cada uno;
pero en la práctica es difícil que esa diferencia tenga importancia.

Ahora, si se trata de registros AFTER que hacen otras operaciones, por
ejemplo un INSERT o un UPDATE en otra tabla, entonces sí te puede
convenir mezclar varios triggers en uno solo, si es que eso te permite
reducir la cantidad de operaciones totales.  Pero si cada trigger hace
operaciones separadas, entonces la cantidad de triggers tampoco debería
importar mucho.

Si tienes constraints DEFERRED también cambia la respuesta.

Saludos




Re: RE: Consulta hit ratio

2020-09-28 Thread Alvaro Herrera
Romero, Fernando escribió:
>Romero, Fernando
>fernando.rom...@trenesargentinos.gob.ar

¡Este mail es otro virus!   ¡No abra el .doc!

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Consulta hit ratio

2020-09-24 Thread Alvaro Herrera
Romero, Fernando escribió:

> El servidor tiene 32GB solo para postgres, hay alguna otra forma de 
> aprovechar eso y darle mas recursos a la base?

¿De qué tamaño es la BD?  Es posible que puedas subir shared_buffers
y que te dé buenos resultados.  Prueba con 8, 12, 16 GB a ver qué pasa.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Consulta de ddl trigger

2020-09-24 Thread Alvaro Herrera
Stephen Amell escribió:
> Buenas tardes lista!
> 
> ¿saben si puedo capturar el comando exacto de ddl que me están ejecutando,
> tipo un alter table?

Sí se puede, pero necesitas código en C.  Hay un módulo simplista en el
código de postgres, src/test/modules/test_ddl_deparse, que muestra cómo
hacerlo.  El módulo en sí no es útil, pero te da pistas de cómo empezar
a escribir algo más completo.

Si tienes necesidad muy fuerte de muchos detalles, hay código en otra
parte que te puede entregar el DDL completo en un formato JSON dedicado.
No es necesario que lo adoptes completo pero podrías tomar prestada la
parte que te haga falta.

> Xq en la docu dice que no se puede usar el dato del campo command
> directamente.

Es cierto.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Re: problema con barman y rsync

2020-09-24 Thread Alvaro Herrera
Martín Díaz escribió:
>Martín Díaz
>mardia...@yahoo.com.ar

Estimados, ¡No abrir este archivo!  Contiene un virus.  Recomiendo
borrarlo de inmediato.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Duda con un select y alias

2020-09-08 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:

> Qué pasa si la función a llamar tiene parámetros que dependen de cada fila
> de la consulta, por ejemplo :
> create or replace function fn_test(x int) returns int
> language plpgsql as
> $$
> begin raise notice 'buu!';
> return x*4;
> end
> $$;
> 
> select fn_test(price::int),price
> from products p2
> where fn_test(price::int) > 6
> limit 100;
> 
> en ese caso puedo hacer algo para llamar a la función una sola vez por cada
> fila? solo se me ocurre un cálculo auxiliar con subconsulta a nivel de
> from, pero termina siendo mas complejo para el motor que ejecutar dos veces
> la función por cada fila :-)

Puedes usar una subconsulta con una "barrera de optimización".  Primero
pones la subconsulta, que da esto:

select fn, price
  from (select fn_test(price) as fn, price from products) AS sc
 where fn > 6
 LIMIT 100;

Pero eso puede no darte el resultado que quieres porque el optimizador
"aplana" la subconsulta convirtiéndola en parte de la consulta externa,
o sea que los "fn" de la consulta externa igual se convierten en la
invocación de fn_test(price).  Para evitar eso agregas una barrera de
optimización que es OFFSET 0:

select fn, price
  from (select fn_test(price) as fn, price from products OFFSET 0) AS sc
 where fn > 6
 LIMIT 100;

Eso le quita libertad al optimizador.


-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Duda con un select y alias

2020-09-07 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Creo que entiendo la duda de Daniel,  el quiere que por cada tupla del
> resultado se llame una única vez a una función y a ese resultado poder
> usarlo en mas de una proyección de columna y por ejemplo en el where y en
> este caso con lo que indica Jairo no lo solucionaría.s

Perdona que te contradiga, pero la solución de Jairo lo soluciona
perfectamente.  Es fácil verlo haciendo que la función deje una traza en
cada ejecución:

=# create function f_articulo_get_precio(int) returns text language
plpgsql as $$ begin raise notice 'buu!'; return '12342020/09/07'; end
$$;
CREATE FUNCTION

por ejemplo, invocándola una vez vemos la traza:

=# select f_articulo_get_precio(1234);
NOTICE:  buu!
 f_articulo_get_precio 
───
 12342020/09/07
(1 fila)

y ahora ejecutamos como Jairo sugiere, la traza aparece una única vez:

=# with T1 as
   (select f_articulo_get_precio(1234) as ls_numero)
   select substr(ls_numero, 8, 13), substr(ls_numero, 21, 10)
   from t1 ;
NOTICE:  buu!
 substr  │ substr 
─┼
 0/09/07 │ 
(1 fila)


> (* tampoco lo puede resolver con lo que indica Anthony*)

Dicho lo anterior, la solución de Anthony es la realmente inteligente.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Gran latency en replication/pg_basebackup setup

2020-08-26 Thread Alvaro Herrera
Hellmuth Vargas escribió:

> hay una máxima que no pasa de moda
> 
> "Nunca subestimes el ancho de banda de un camión cargado de Disquetes"

Hmm, está modernizada tu versión de la máxima!  Yo la había escuchado
con un "camión cargado de cintas" (de respaldo, se entiende).

> Hace 15 días tenía que crear una réplica en una ubicación remota, sólo
> 160GB!! Pero el canal no daba, llevaba 8 horas y sólo había avanzado 40Gb y
> se había cancelado por una desconexión: tomamos un disco duro externo,
> copiamos otra réplica, en una hora estuvo en la ubicación destino, copiamos
> el backup y arriba a sincronizar, el canal si da para los WAL y esta
> trabajando hace 7 días!

Buena anécdota.

Saludos

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Error pg_restore

2020-08-25 Thread Alvaro Herrera
Jairo Graterón escribió:
> Acabo de observar que postgresql no corre directamente en el SO, están
> usando dokku
> y que al abrir una conexión se crea un proceso
> 
> socat -t 1 TCP4-LISTEN:5432,fork,reuseaddr TCP4:172.17.0.2:5432

Hmm, yo no tengo idea lo que significa esto, pero el error de SSL
sugiere que tienes un problema de red.  El timeout ridículo que están
pasando como argumento al socat puede ser indicativo de que algo no anda
bien ahí y por eso pusieron esa opción.  (Ese valor sugiere que la
persona que lo hizo no leyó el manual, o que no entendió lo que ahí
decía).

En el github de "dokku", la interfaz de búsqueda de github no encuentra
ninguna coincidencia para "socat" ... aunque quizás es algo que hace
Docker mismo.  Puede que tu solución sea huir como de la plaga.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: problema con barman y rsync

2020-08-24 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Alvaro, internamente barman lanza un rsync desde barman trayendo datos de
> postgres?
> O hace que inicie un rsync desde postgres hacia el (barman)?

No lo tengo 100% seguro, pero me parece mucho más complicado hacer lo
segundo, así que me inclino a pensar que es lo primero.

> Acá También sospechamos de red pero entre dos maquinas virtuales en el
> mismo hard? 🤔

Bueno, mi sugerencia se mantiene: prueba lanzando el rsync a mano a ver
qué sucede.  A mí me llama mucho la atención que deje de funcionar a los
64 GB.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: problema con barman y rsync

2020-08-24 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Buen día, por favor si me pueden dar una mano para detectar el problema,
> tengo un barman haciendo backup de varios servidores postgres.
> Funciona bien con 3 servidores, hay un 4to server postgres que no estoy
> pudiendo hacer el base backup (barman backup nombre_server) ya que rsync
> está reportando un error.

Hola

> *2020-08-21 11:51:10,233 [56775] barman.copy_controller WARNING: Failure
> executing rsync on remote PGDATA directory: /home/postgres/data/ (attempt
> 0)2020-08-21 11:51:10,234 [56775] barman.copy_controller WARNING: Retrying
> in 30 seconds2020-08-21 11:59:54,925 [56775] barman.copy_controller

Extraño.  Es rsync el que tiene el problema.  ¿has mirado en los logs
del otro lado a ver si rsync deja algo?  Parece como si hubiera un
problema intermitente en la red, que hace que rsync transfiera una buena
cantidad de datos pero se atora.  Es posible que sea tu equipamiento de
red que no está reaccionando apropiadamente:

> *>f+ base/145250215/145250989.19>f+
> base/145250215/145250989.2>f+
> base/145250215/145250989.20>f+
> base/145250215/145250989.21>f+
> base/145250215/145250989.22client_loop: send disconnect: Broken pipersync:
> connection unexpectedly closed (68618524218 bytes received so far)
> [receiver]rsync error: error in rsync protocol data stream (code 12) at
> io.c(226) [receiver=3.1.3]rsync: connection unexpectedly closed (69526
> bytes received so far) [generator]rsync error: unexplained error (code 255)
> at io.c(226) [generator=3.1.3]*

Se muere como 100 MB antes de llegar a los 64 GB.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: problema para sustituir una master con una replica

2020-08-20 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola  lista tengo un PostgreSQL 9.5.9

9.5.23 es lo más reciente.  La cantidad de errores que puede haberse
corregido en todo ese tiempo (tres años menos ocho días) no quiero ni
pensarlo.  Actualiza todo y prueba de nuevo; si persiste nos cuentas.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Consulta sobre WAL

2020-08-10 Thread Alvaro Herrera
Pablo Rodriguez escribió:

> Quería consultar lo siguiente, tengo un postres version 10.1 en cluster con
> un pgpool y tengo mi filesystem casi lleno por la
> carpeta /var/lib/postgresql/10/main/archivedir  que por lo que entiendo
> corresponde a los archivos WAL.

Son archivos WAL, pero no es la ubicación crítica para postgres (que es
pg_wal y se "limpia solo").  El archivedir debería ser limpiado con
pg_archivecleanup, según la configuración de tus réplicas y/o respaldos.
Si tu archive_command está guardando los WAL ahí, alguna razón tendrás,
pero en principio parece mala idea.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: alternativa pg_xlog_replay_pause

2020-07-22 Thread Alvaro Herrera
kernel escribió:

> He instalado postgresql version 11 y ahora me dice que no existe la funcion
> 
> ERROR:  function pg_xlog_replay_pause() does not exist
> LÍNEA 1: SELECT pg_xlog_replay_pause()

Todas las funciones que tenían "xlog" en el nombre fueron cambiadas a
que usen "wal" en reemplazo.  Creo que esto pasó en Postgres 10.

Saludos

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: uso de Include en los indices

2020-06-23 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola Diego
> 
> Gracias por la respuesta, pero.. y qué ventaja tendria? pues lo mismo se
> logra con un índice compuesto e incluso este último permitirá  filtrar
> además por el otro campo, e incluso el optimizador prefirió el índice
> compuesto.

Por ejemplo puedes incluir columnas adicionales en índices UNIQUE (en
las cuales no se verificará unicidad), o incluir columnas que no son
indexables.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: prueba de jit en postgres 11

2020-06-11 Thread Alvaro Herrera
Hellmuth Vargas escribió:
> Hola Alvaro
> 
> Muchas Gracias por la respuesta, el rendimiento de la máquina no fue el
> esperado, la carga de cpu subió  muchísimo

Hola, esto suena a que debe haber habido algún bug, o le diste demasiada
carga a la máquina.  Si es un bug, lo ideal es aislar el culpable y
reportarlo para que los devels puedan encontrar y corregir el problema.

> y algunas consultas triviales se demoran demasiado,

Seguramente esto fue por el exceso de carga.


-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Cambio de servidor primario

2020-06-10 Thread Alvaro Herrera
Carlos Damián Hernández escribió:
> Estimados buenos día para todos
> 
> En un escenario de 2 servidores en version 11.7 con un master y un
> slave en hot standby donde la aplicación apunta al master y al slave
> solo van consultas grandes surge los siguiente:
> 
> Debo bajar el master y enviar mi aplicación al slave, que por un
> tiempo será el único servidor.
> 
> Que consideraciones debería tener al momento de bajar el master ? y
> cuales a a la hora de volver al escenario inicial?

Creo que el procedimiento es algo así:

1. Pones pgbouncer en pausa
2. le dices a repmgr que haga el promote
3. reconfiguras el pgbouncer para que apunte al primario-que-era-réplica
4. le sacas la pausa a pgbouncer

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: prueba de jit en postgres 11

2020-06-10 Thread Alvaro Herrera
Hellmuth Vargas escribió:

Hola

> Entiendo que JIT  básicamente  aplica para la optimización  de consultas
> (diciéndolo de forma coloquiar)

Sí, la idea es que algunos pasos en la ejecución de consultas se pueden
"compilar" a código específico para esa operación específica, lo que
resulta más eficiente que ejecutar el código genérico.  Pero se incurre
en un costo de hacer esa compilación.  Si se va a ejecutar pocas veces,
no vale la pena hacer la compilación, porque el menor tiempo de
ejecución lo vas a perder en la compilación.

> Tengo  varias preguntas:
> 
> - Los datos o en general la replica puede llegar a corromperse (porque la
> master no tiene jit) o si eventualmente llega a ser master (promoviéndola),
> las replicas  existentes podrían apuntar a esta?

Por diseño, las réplicas nunca escriben datos, así que aún si hubiera
un tremendo bug en el JIT no es posible que resulte en corrupción de
datos si lo ejecutas en una réplica.  Por otra parte, el JIT actualmente
sólo se aplica en operaciones de lectura, no en escrituras, así que aún
si lo pusieras en el primario, no es posible que resulte en corrupción.

La única opción para que tengas un problema de ese tipo es que JIT tenga
algún bug que cause que el sistema se caiga.  Esto no es imposible pero
yo no he visto reportes de que esto haya sucedido.

> - los valores por defecto de los parámetros  jit_above_cost,
> jit_inline_above_cost y  jit_optimize_above_cost son altos, en general no
> se encuentra mucha información para la configuración de estos, que valores
> deberían establecerse (por criterios como RAM, o CPU o tipo de disco duro,
> etc como se hacer  con otros parámetros).. o debo tomar algunas de las
> consultas pesadas y empezar a jugar con estos?

Sí, experimentar es lo mejor.  Piensa que el tiempo de compilación es de
unos cuantos cientos de milisegundos, así que una consulta rápida no se
verá beneficiada.

Las operaciones que actualmente se optimizan son:

1. "deforming" de tuplas (es decir, convertir la representación "muchos
bytes en disco" de una tupla separándola en los valores de cada columna)

2. ejecución de expresiones (es decir, tomar cosas como "columna + 10" 
y convertirla en código nativo de CPU que ejecuta la suma de dos
valores donde uno es constante y el otro se lee de la tupla)

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Empezando con Slony

2020-06-08 Thread Alvaro Herrera
Fontana Daniel C (Desartec S.R.L.) escribió:

> Estoy comenzando PostgreSQL version 10 y con SLONY 2.2.6 (un maestro y un
> solo esclavo para pruebas), tengo algunas dudas. Quisiera saber que grupo
> específico, si lo hay, es sobre SLONY?

Slony está obsoleto.  Usa la replicación lógica nativa[1] de Postgres en
vez de eso; tiene mucho mejor rendimiento y es más fácil de manejar,
aunque no tiene todas las capacidades.  Si te encuentras con alguna
limitación que es imposible de solventar con la replicación nativa, dale
una mirada a pglogical[2].

[1] https://www.postgresql.org/docs/12/logical-replication.html
[2] https://www.2ndquadrant.com/es/resources/pglogical/

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: localizar sentencia en archivos wal

2020-06-05 Thread Alvaro Herrera
kernel escribió:
> Hola,
> 
> Me me han desaparecido los datos de una tabla, por suerte teníamos copia de
> seguridad y ya lo hemos restaurado.
> 
> La cuestión es que no sabemos por que ha podido suceder , no sabemos si ha
> podido ser el ERP o algún usuario de administración del al db lo haya
> borrado  por error
> 
> Disponemos de una copia base y de todos los archivos wal, ¿hay alguna manera
> de poder buscar las sentencias en estos archivos wal para poder tirar del
> hilo?

Sí, se puede seguir el hilo, pero como dijo Martín es a nivel físico. Lo
primero es obtener el relfilenode de la tabla (de pg_class) y el ctid de
la tupla que quieres investigar.  Luego usa pg_waldump (o pg_xlogdump en
versiones anteriores) para encontrar qué le hizo update o delete a esa
tupla en ese relfilenode.  Eso te dará un XID (identificador de
transacción).  Puedes ver qué más hizo esa transacción usando pg_waldump
-x.  Si tu log_line_prefix tiene %x entonces podrás ver lo que dejó en
el log esa transacción (por ej. cuándo se conectó, desde qué IP, etc).

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: problema al intentar recuperar PITR

2020-06-02 Thread Alvaro Herrera
Martín Marqués escribió:
> Mas que recomendar usar rsync, mejor instalar barman y ahorrarse tantos
> dolores de cabeza!

Sí, yo pensé lo mismo desde hace bastantes mails en este hilo.
Escribir archive_commands y restore_commands no es fácil, aunque lo
parezca.  Los ejemplos de la documentación tienen problemas :-(

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Problema de conexion Postgres y Prestashop

2020-05-27 Thread Alvaro Herrera
Wilson Montero Quiroz escribió:
> Estimados, espero su ayuda.
> Estoy instalando Prestashop 1.7 y lo quiero enlazar con postgresql 10, ya que 
> personalmente me gusta esta base de datos en cuanto a rendimiento y demás.

Postgres no está soportado por prestashop.

https://github.com/PrestaShop/PrestaShop/issues/13512

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Problema de conexion Postgres y Prestashop

2020-05-27 Thread Alvaro Herrera
Wilson Montero Quiroz escribió:
> Estimados, espero su ayuda.
> Estoy instalando Prestashop 1.7 y lo quiero enlazar con postgresql 10, ya que 
> personalmente me gusta esta base de datos en cuanto a rendimiento y demás. 
> Llevo días tratando de conectar la base de datos y siempre me arroja este 
> error.Database server not found. Please verify the username, password and 
> server (DbPDO) fields
> Crei que era un problema de postgresql rejection, le habilite el ip del 
> computador desde dnde se esta accediendo al computador en los archivos 
> posgresql.conf y pg_hba.conf, sin embargo sigo sin poder conectar. Los datos 
> de usuario, clave y base de datos estan bien. la dirección de conexion esta 
> 127.0.0.1:5432, inclusive el puerto el habilite en UFW. Se quito los 
> comentarios en extension=pdo_psql y extension=pgsql, la base de datos es 
> md5.Probé con dos bases de datos1. encoding = SQL_ASCII, LC_COLLATE AND 
> LC_TYPE = C2. Utf-8

¿por qué la dirección es 127.0.0.1:5432?  Eso no traduce correctamente.
Prueba con 127.0.0.1.  Si eso no funciona, muestra un copy&paste de la
configuración.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: problema al intentar recuperar PITR

2020-05-26 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:

> Aclaro que pude realizar la restauración del server, pero copiando a mano
> los wal al directori pg_xlog

¿qué hay en archive_command?  Me pregunto si estarás borrando los WAL
cuando los archivas (cosa que, obviamente, no debe hacerse)

Saludos

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: probable translation typo

2020-05-11 Thread Alvaro Herrera
Justin Pryzby escribió:
> src/bin/pg_dump/po/es.po:msgstr "  --on-confict-do-nothing  agregar ON 
> CONFLICT DO NOTHING a órdenes INSERT\n"
> 
> Should say "on-conflict" with an "ell"

You're right, thanks for reporting.  Fixing ...

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Organización masters y réplicas

2020-04-29 Thread Alvaro Herrera
Francisco Olarte escribió:

> La descripcion es un poco incompleta, en opcion 2 ambos o ninguno (
> depende de si vuela el master o la replica ), o sea, el numero
> esperado de failovers es el mismo si fallan random.

Cierto.

> Por otro lado, no se como andan los SSG ahora, pero tengo entendido
> que cuando se molestan suelen ser bastante catastroficos fallando ya
> de por si, con lo que "ignicion espontanea" puede no ser mala
> descripcion ).

También es cierto, aunque han mejorado mucho en confiabilidad.  Me
imagino que habrán puesto algún tipo de RAID.

> Lo que comentas es por otro lado correcto considerando el peor caso,
> que es el que IMHO hay que mirar aqui ( suponiendo servidores iguales
> para el resto de parametros, ya que solo descriube el disco, y ademas
> tiene pinta de que estan cercanos ).

Si se inunda o derrumba el datacenter, ya es harina de otro costal :-)

> Yo añadiria ademas que la opcion 1, puede ayudar a equilibrar la
> carga, pero ahi habria que medir, no sea que, p.e., los reports se
> hagan a distintas horas siempre o cosas de esas. Pero sin mas datos,
> habria que suponer BD iguales, mismo acceso, se reparte mejor.

Sí, eso es algo que analizar también.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Organización masters y réplicas

2020-04-28 Thread Alvaro Herrera
Hellmuth Vargas escribió:

> Quieren migrar otra de sus bases de datos a estos nuevos servidores y
> plantean si poner cruzados las máster y réplicas... Osea
> 
> Opción 1:
>   equipo 1:  máster 1, réplica 2
>   Equipo 2: máster 2, réplica 1
> 
> Opcion 2:
>   equipo 1:  máster 1, máster 2
>   Equipo 2:  replica1, réplica 2

Hola, una consideración importante es qué sucede si una máquina recibe
un impacto de meteorito, estalla, o hace ignición espontánea (etc, se
entiende).  En opción2, ambos clústers tendrán que hacer failover; en
opción1 sólo uno de ellos lo hará.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: log de sentencias SQL

2020-04-14 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Hola Alvaro, actualmente lo está registrando así el log:
> linea 200 -    UDPATE col1=$1 WHERE col2=$2
> linea 201 - . DETAIL: Parameters: $1 = '\x255. y ahí
> viene todo el chorizo de contenido del bytea y luego el parámetro $2
> 
> A la aplicación no la hacemos nosotros, pero que tipo de sentencia puedo
> sugerir? alguna referencia url para pasar el contenido bytea por separado?

Eh, en ese caso, el parámetro ya se está pasando por separado -- no hay
forma de limitarlo.

Justo en Postgres 13 agregamos unos parámetros para configurar el largo
máximo de parámetros que se mandan al log.  Obviamente sería bueno que
lo probaras en cuanto salga el primer beta (o incluso lo puedes probar
ahora mismo) para verificar que el comportamiento es el que tú quieres.
Puedes verlo aquí:
https://www.postgresql.org/docs/devel/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT
bajo el nombre log_parameter_max_length y
log_parameter_max_length_on_error.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: log de sentencias SQL

2020-04-09 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Hola buenas tardes
> En un servidor en producción estamos haciendo temporalmente log de todas
> las sentencias SQL.
> Un problema es que tenemos una tabla con un campo bytea y cada vez que hay
> un insert o update sobre ese campo, se transcribe en el log el contenido
> completo del campo bytea . Existe alguna forma de evitar esto? que si se
> haga log de las sentencias, pero en el caso de campo bytea trunque la
> sentencia o alguna solución similar?

No que yo sepa.

Lo que podrías hacer es cambiar la sentencia para que el bytea se envíe
como un parámetro separado en vez de venir interpolado en la cadena de
la consulta.  Eso es algo que tienes que cambiar en la aplicación.  De
todos modos es buena idea, porque ahorra bastante trabajo ...

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Arranque automático

2020-03-10 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:

> El lun., 9 mar. 2020 a las 14:45, Alvaro Herrera ()
> escribió:

> > Hmm, esto está desactualizado.  Deberías estar usando el archivo
> > .service para systemd, no los scripts antiguos sysv.
> >
> *Yo estaba usando el que descargué junto con los fuentes del directorio
> contrib el .service también está disponible junto con los fuentes?*

No, viene con paquetes.  Puedes copiarlo de allá.

> 'su' si está Alvaro, y funciona desde línea de comandos.
> *Probé de ponerle el path completo, pero no funca tampoco, error con código
> 126 ahora*

man su:

EXIT STATUS
 126The requested command could not be executed

Posiblemente limitación de selinux o algo similar.  ¿Deberías marcar el
ejecutable con la etiqueta apropiada?

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Arranque automático

2020-03-09 Thread Alvaro Herrera
Guillermo E. Villanueva escribió:
> Buenos días, instalé desde fuentes postgres 12 sobre centos 8
> Copié el script de inicio desde contrib/start-scripts hacia el directorio
> ...init.d
> 
> Postgres inicia sin problemas con pg_ctl y también con la línea de comandos
> service postgres start

Hmm, esto está desactualizado.  Deberías estar usando el archivo
.service para systemd, no los scripts antiguos sysv.

> El código de la línea mencionada en el mensaje de error (línea 94) es:
> su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' >>$PGLOG 2>&1 &"

> mar 09 12:36:46 centos8 postgres[875]: Starting PostgreSQL:
> /etc/rc.d/init.d/postgres: línea 94: su: no se encontró la orden

Esto significa que 'su' no está o no puede encontrarse por alguna razón.
¿Quizás no tienes instalado el paquete util-linux (me parecería muy
raro)?  Quizás el script no tiene en PATH la ubicación de 'su'.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Exportacion por lotes

2020-03-03 Thread Alvaro Herrera
On 2020-Mar-03, Hernan Jesus Gonzalez Carmona wrote:

> Estimados antes que todo me presento, mi nombre es Hernan Gonzalez, me
> acabo de inscribir en esta lista de correo y desde ya me disculpo si en
> este mensaje violo alguna normativa de la lista de correo pero necesito
> ayuda que me apura mucho.
> 
> Quien me podria ayudar con información respecto de como exportar una
> consulta en distintos archivos según una condición determinada y que cada
> archivo tenga el nombre de dicha condición, es decir, si tengo una tabla
> con 100 registros y uno de los campos tiene un dominio de 4 valor
> distintos, necesito generar 4 archivos cada uno con nombre de cada valor
> posible de dicho campo, y que la suma de los registros de los 4 archivos
> sea 100

Hernán, tu mensaje no viola ninguna norma, pero la lista pgsql-general
trafica en inglés.  Para preguntas en castellano puedes usar la lista
pgsql-es-ayuda (en copia).

No indicaste qué herramienta quieres usar para lograr tu resultado.
Por ejemplo si puedes usar bash, podrías hacer algo como

#!/bin/bash

valores=$(psql -At --no-psqlrc -c "select distinct valores from tabla")
for i in $valores; do
  psql -At --no-psqlrc -o "resultados-$i.txt" -c "select * from tabla where 
valores = '$i'"
done

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: SCHEMAS DESAPARECIDOS

2020-02-19 Thread Alvaro Herrera
Flor Avila escribió:
> Gracias, por la pronta respuesta, el respaldo no es el problema, el
> problema es porque no los encuentro o no los muestra postgres porque estan
> con un problema y me gustaria saber como los recupero o que paso para que
> no vuelva a pasar.

Es posible que te hayan crackeado el servidor ... ya hemos visto un par
de casos acá en esta lista y en otros lugares.  No sería mucha sorpresa
que tuvieras problemas de seguridad sin parchar en tu servidor, sobre
todo con la evidencia que indica que sigues usando una versión de
Postgres dos años después que ya no está soportada por la comunidad (y
por lo tanto tiene agujeros de seguridad conocidos y explotables).

En resumen: yo aconsejaría reinstalar todo en máquinas limpias, usando
versiones soportadas del sistema operativo y Postgres, sin agujeros de
seguridad, y restaurar backups.  Formatea completa esa máquina porque si
alguien se metió es seguro que puso más de un "backdoor".

Saludos

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: SCHEMAS DESAPARECIDOS

2020-02-19 Thread Alvaro Herrera
Flor Avila escribió:
> Por favor agradeceria si me ayudan, hoy ingrese a mi server y ya no
> encontre schemas en mi server, ni el publico ni otro, que puedo hacer tengo
> el postgres 9.3

¿tienes backups?

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Que tan cierto es sobre este virus de postgresql..

2020-01-14 Thread Alvaro Herrera
Micky Khan escribió:
> ALERTA NUEVO VIRUS QUE ATACA LAS BASE DE DATOS POSTGRESQL ELIMINA TODA LA 
> INFORMACIÓN Y CREA UNA TABLA CON EL NOMBRE "WARNING" DONDE ALMACENA LA 
> INFORMACION DE CUANTO SE TIENE QUE PAGAR EN BITCOIN PARA RECUPERAR LA 
> INFORMACIÓN
> [https://www.bitcoinabuse.com/…/1KnMcEqCTvQfMzEgnvfZvyprLPc2…](https://www.bitcoinabuse.com/reports/1KnMcEqCTvQfMzEgnvfZvyprLPc2bnvMm8?fbclid=IwAR3880p0ZlkR-kWRUg3WjrbJBALF-umrcZsppE54MfkOKgH5vrvAT5iQ2Iw)

:-(  Hace poco tuvimos en esta lista un reporte de alguien a quien le
tomaron la BD de rehén.  La sugerencia obvia es mantener todo el
software al día (Postgres y el sistema operativo), tener los firewalls
apropiados, no dejar permisos "trust", restringir lo más posible los
accesos de superusuario, etc.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: saber que filas se actualizaron o insertaron con upsert

2020-01-14 Thread Alvaro Herrera
mauricio pullabuestan escribió:
> Buen día
> 
> Tengo una tabla a la cual envió un json para insertar o actualizar
> registros, me interesa mediante returing insertar en una tabla
> temporal los registros afectados y de alguna forma poder distinguir
> cuales se insertaron o actualizaron para poder interactuar después.

Estoy casi seguro que INSERT ON CONFLICT DO UPDATE no tiene ninguna
manera de distinguir registros que fueron insertados de aquellos que
fueron actualizados.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Consulta sobre DISCARD

2020-01-13 Thread Alvaro Herrera
Romero, Fernando escribió:
> Hola como están, alguien tienen experiencia con DISCARD?
> Estoy teniendo problemas de perfomance cuando se ejecuta DISCARD me mata la 
> base, me usa el 100% de la CPU.

¿qué versión de Postgres?  ¿esto puedes reproducirlo con psql?  Si es
así, ¿qué pasa si le das un Ctrl-C a psql mientras está ejecutando el
DISCARD?

Creo que lo mejor para investigar qué está pasando es tomar un
"backtrace" con GDB del proceso servidor que está ejecutando DISCARD.
Si pudieras instalar "gcore" y mandar la salida de ejecutarlo en el
proceso que usa ese 100% de CPU, puede que encontremos algo.

Saludos

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: procesos que no terminan

2020-01-10 Thread Alvaro Herrera
Jose Mercedes Venegas Acevedo escribió:
> Buen dia a todos
> 
> recientemente consulte la tabla de actividad de postgres y resulta que
> encontre estos 3 procesos

Hola, esos procesos son normales y necesarios para la operación de
Postgres.  No los mates.

El que reportan que usan muchos GB de memoria se debe a que el sistema
operativo cuenta los accesos a memoria compartida(*).  Pero la cantidad de
memoria privada que usan es poca.  No debe preocuparte.

(*) pero sólo se cuenta a medida que la acceden.  Por eso al principio
reportan muy bajo uso, y va creciendo paulatinamente.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: reconstruir indices

2020-01-04 Thread Alvaro Herrera
Romero, Fernando escribió:
> Hola como están.
> Necesito reconstruir todos los índices de una base de datos, pero me da error 
> la sintaxis.
> 
> ERROR:  can only reindex the currently open database
> 
> La sintaxis es reindex database "nombredela basededatos";

Tienes que estar conectado a la base de datos "nombredela basededatos".
No funciona si estás conectado a otra.

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Ransomware

2019-12-31 Thread Alvaro Herrera
Victor Báez escribió:
> Alvaro
> Sabes de alguien que pago y que le decodificaron?

No, pero tú mismo ya dijiste que el "hacker" te mandó el archivo
decodificado, lo que significa que por lo menos es verdad que tiene la
llave.

USD3000 parece un precio razonable por un curso express de mantener
buenos backups (y los servidores importantes parchados y bien aislados
de la red).

> No tengo mucha confianza pero no tengo opciones

En este caso, no veo que haya jurisdicción para perseguir al criminal,
así que no sé qué recurso podrías tener.  O pagas, o te jodes.

Yo nunca le he tenido mucha confianza al tema de los bitcoins, y he
visto que esta es la aplicación más exitosa que han tenido: actividad
criminal imposible de perseguir judicialmente.  Si no existieran
bitcoins y se viera obligado a usar una cuenta de banco o Paypal o algo
así, sería perseguible.  Los lavadores de dinero, narcotraficantes,
traficantes de órganos (menores), "blancas", etc son los más
beneficiados.  Mientras tanto una fracción de la humanidad se siente
feliz por llenar sus cuentas de banco "minando bitcoins" ...
(Sí, es verdad que esa actividad criminal siempre ha existido y no va a
dejar de existir si es que llegaran a eliminarse completamente las
criptomonedas; pero no veo por qué hacerles la vida más fácil).

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Ransomware

2019-12-31 Thread Alvaro Herrera
Horacio Miranda escribió:
> Igual anota el bitcoind y hace la denuncia.

¿a qué autoridad?

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




  1   2   3   4   >