Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
Hola lista Continué con la evaluación del BDR para mi caso y realice unas pruebas adicionales que aquí se las presento. Respecto al tema de la secuencias, pues la mas fácil que se me ocurrió por el momento fue crear secuencias locales y establecer un servidor con secuencias pares y el otro impares... :-) obvio esto solo para el esquema de dos maestros multimaster. Eso es posible ya que si bien es cierto la definición de la secuencias se comparte en ambos servidores, el valor actual si queda en el ámbito de cada servidor: bdrdemo=# create secuence seq_bdr_prueba start with 1 INCREMENT BY 2; --- servidor puerto bdrdemo=# select setval('seq_bdr_prueba',1); --- servidor puerto bdrdemo=# select setval('seq_bdr_prueba',2); --- servidor puerto bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 1 (1 row) bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 3 (1 row) bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 5 (1 row) --- servidor puerto bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 2 (1 row) bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 4 (1 row) bdrdemo=# select nextval('seq_bdr_prueba'); nextval - 6 (1 row) - --- servidor puerto bdrdemo=# create table tbpruebas(id bigint default nextval('seq_bdr_prueba') primary key, numero bigint, origen text); CREATE TABLE --- servidor puerto bdrdemo=# insert into tbpruebas(numero,origen) select a.dato,'' from generate_series(1,3000) as a(dato); INSERT 0 3000 bdrdemo=# select count(*) from tbpruebas; count -- 3000 (1 row) --- casi simultáneamente en el servidor puerto bdrdemo=# insert into tbpruebas(numero,origen) select a.dato,'' from generate_series(1,3000) as a(dato); INSERT 0 3000 bdrdemo=# select count(*) from tbpruebas; count -- 3000 (1 row) --- y despues de un tiempo... --- servidor puerto bdrdemo=# select count(*) from tbpruebas; count -- 6000 (1 row) bdrdemo=# select * from tbpruebas order by id desc limit 10; id| numero | origen --+--+ 6010 | 3000 | 6008 | 2999 | 6007 | 3000 | 6006 | 2998 | 6005 | 2999 | 6004 | 2997 | 6003 | 2998 | 6002 | 2996 | 6001 | 2997 | 6000 | 2995 | (10 rows) Parte 2: Realice una prueba, reconstruyendo un backup de la base de datos y obtuve las siguientes observaciones: 1. las tablas cuyos campos tiene estadísticas personalizadas fallan y no se crean: definición de la tabla: CREATE TABLE llamadas ( calldate timestamp with time zone NOT NULL DEFAULT now(), clid character varying(80) NOT NULL DEFAULT ''::character varying, src character varying(80) NOT NULL DEFAULT ''::character varying, dst character varying(80) NOT NULL DEFAULT ''::character varying, dcontext character varying(80) NOT NULL DEFAULT ''::character varying, . CONSTRAINT cdr_agentes_pkey PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); ALTER TABLE llamadas ALTER COLUMN calldate SET STATISTICS 500; ALTER TABLE llamadas ALTER COLUMN dcontext SET STATISTICS 500; Error generado: pg_restore: processing item 1014 TABLE llamadas pg_restore: creating TABLE llamadas pg_restore: [archiver (db)] Error from TOC entry 1014; 1259 116741355 TABLE llamadas pg_restore: [archiver (db)] could not execute query: ERROR: ALTER TABLE ... ALTER COLUMN SET STATISTICS|(...) may only affect UNLOGGED or TEMPORARY tables when BDR is active; llamadas is a regular table Command was: CREATE TABLE llamadas ( calldate timestamp with time zone DEFAULT now() NOT NULL, clid character varying(80) DEFA... pg_restore: [archiver (db)] could not execute query: ERROR: relation llamadas does not exist Command was: ALTER TABLE llamadas OWNER TO user; 2. no soporta vistas materializadas: pg_restore: processing item 5618 MATERIALIZED VIEW mv_calificacion pg_restore: creating MATERIALIZED VIEW mv_calificacion pg_restore: [archiver (db)] Error from TOC entry 5618; 1259 273374704 MATERIALIZED VIEW mv_calificacion postgres pg_restore: [archiver (db)] could not execute query: ERROR: CREATE MATERIALIZED VIEW is not supported when bdr is active Command was: CREATE MATERIALIZED VIEW mv_calificacion AS SELECT x.id, split_part(x.path, '@'::text, 1) AS calificacion, CASE... pg_restore: [archiver (db)] could not execute query: ERROR: relation mv_calificacion does not exist Command was: ALTER TABLE mv_calificacion OWNER TO postgres; 3. falla en la creación de indices y constraints cuanto se configura el pg_restore con varios jobs concurrentes': pg_restore: creating INDEX idx_tmp_busqueda_identificacion pg_restore: [archiver (db)] Error from TOC entry 20671; 1259 271924294 INDEX idx_tmp_busqueda_identificacion
Re: [MASSMAIL][pgsql-es-ayuda] ayuda sobre procedimientos almacenados y cursores
quien es r?, estas abriendo el cursor y asignando el resultado de la consulta en r, te quedaría create or replace function models_data_rs() returns setof refcursor as $$ declare ref refcursor; begin open ref for select * from models; end; $$ language plpgsql; - Mensaje original - De: Freddy Martinez Garcia freddy311...@icloud.com Para: pgsql-es-ayuda@postgresql.org Enviados: Viernes, 6 de Febrero 2015 14:49:10 Asunto: [MASSMAIL][pgsql-es-ayuda] ayuda sobre procedimientos almacenados y cursores Hola a todos. soy nuevo usando postgres y tengo el siguiente código: create or replace function models_data_rs() returns setof refcursor as $$ declare ref refcursor; begin open ref for select * into r from models; end; $$ language plpgsql; hasta ahí va todo bien, el tema es que desde el mismo postgres cuando hago select models_data_rs(); postgres me da el siguiente error: ERROR: cannot open SELECT query as cursor CONTEXT: PL/pgSQL function models_data_rs() line 5 at OPEN ** Error ** ERROR: cannot open SELECT query as cursor SQL state: 42P11 Context: PL/pgSQL function models_data_rs() line 5 at OPEN cómo resuelvo el problema ?? saludos a todos = El tamaño de tus logros depende del tamaño de tus metas. C++ and Qt Senior Developer Lic. Computer Science Buenos Aires, Argentina
Re: [pgsql-es-ayuda] consulta sobre sequencias globales de BDR
Hellmuth Vargas escribió: Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. El insert con generate_series() es realmente representativo de lo que se hace en la base de datos real, o es sólo para simular miles de transacciones? Porque si la carga real no implica insertar miles de registros en una sola sentencia, sino uno o unos pocos registros en cada sentencia (repetida miles de veces), es posible que las secuencias globales funcionen perfectamente en tu caso. Además, en versiones tempranas de BDR las secuencias globales eran algo lentas (varios segundos en generar un nuevo bloque para el servidor al que se le agotó), pero esto se ha corregido hace poco. ¿Tienes presente que el carácter asincrónico significa que puedes insertar registros en el servidor A, y a continuación consultar en el servidor B varios segundos después y NO VER los registros que acabas de insertar? El balanceo de carga es bueno, pero la aplicación no puede cambiarse al servidor B cuando el A esté con carga muy alta, y esperar que la base de datos sea consistente con el estado que veía en A. Es necesario introducir un período de espera para que los cambios se propaguen. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
[pgsql-es-ayuda] duda
Hola amigos de la comunidad. Estoy teniendo problemas de rendimiento con una función que estoy realizando. Resulta que tengo dos tablas A y B y tengo que hacer un reporte estadístico en el cual tengo que sacar cada registro de la tabla A con cada registro de la tabla B y en cada uno de ellos hacer una serie de subconsultas para obtener estadísticos, ejemplo Tabla A Tabla B Uno X DosY Tres Z Resultado Criteriocolumna1Columna2 Columna3 Citerio2 Uno 0 0 0 X Uno 0 0 0 Y Uno 0 0 0 Z Dos0 0 0 X Dos0 0 0 Y Dos0 0 0 Z Tres 0 0 0 X Tres 0 0 0 Y Tres 0 0 0 Z Donde columna1, columna2 y columna3 serían el resultado de 3 subconsultas. Para ello uso dos For anidado pero no estoy seguro que esto sea lo más adecuado. Agradecería si alguien me diera alguna idea. Saludos, Ing. Esneiker Enriquez Cabrera Esp. B en Ciencias Informáticas Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. Cuba. Telf.: 53 33 22 8971, email.: mailto:eenriq...@cav.desoft.cu eenriq...@cav.desoft.cu
Re: [pgsql-es-ayuda] Buen dia
Buen dia !! Espero me puedan ayudar . Tengo una duda, estoy configurando pgpool y con el pgadmin veo esta pantalla, porque me aparece que mi postgresql esta abajo?? que dato me puede faltar ? si mis bases de datos en los servidores estan arriba. Prueba con los comandos de pcp_ para comprobar esa información ese webadmin a veces me dio retraso en la información ... lo cual no significa que lo que muestra no sea así comprueba con lo que te comento y luego nos comentas Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Buen dia
Hola Maria. creo que hace falta que postgres acepte conexiones de pgpool admin, cuando todo funciona debe ser asi: [image: Imágenes integradas 1] El 9 de febrero de 2015, 14:18, MARIA ANTONIETA RAMIREZ SOLIS marami...@ulsaneza.edu.mx escribió: Buen dia !! Espero me puedan ayudar . Tengo una duda, estoy configurando pgpool y con el pgadmin veo esta pantalla, porque me aparece que mi postgresql esta abajo?? que dato me puede faltar ? si mis bases de datos en los servidores estan arriba. les adjunto la pantalla: - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Raul Andres Gutierrez Alejo