Re: Problemas de tamaño/recodificacion

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: kernel <jucabapa(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problemas de tamaño/recodificacion
Date: 2019-08-08 10:59:02
Message-ID: 8966b7f8-c42a-58cf-04ed-abc6d7e9325e@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


On 8/08/2019 9:49 PM, kernel wrote:
>
> El 08/08/2019 a las 10:35, Horacio Miranda escribió:
>> Debes indicar un poco mas de informacion, parametros, version de la
>> base, si estas usando XML parsers... la consulta que estas haciendo
>> cuando se cae, etc...
>>
>> Lee el correo y revisa que estes entregando toda la informacion que
>> alguien de soporte te pueda preguntar.
>>
>> On 8/08/2019 8:21 PM, kernel wrote:
>>>
>>> Hola,
>>>
>>> Tengo una funcion plpgsql que me devuelve un valor xml de 0,5 GB, La
>>> codificacion que tiene la DB es UTF-8, como el cliente que utilizo
>>> es latin9, creo que a la hora del intercambio al hacer el cambio de
>>> encoding me da el problema
>>>
>>> ¿alguna idea?
>>>
>>> Gracias
>>>
>>>
>>> ERROR:  memoria agotada
>>>
>>> La cadena de 516574025 bytes es demasiado larga para la recodificación
>>>
>>>
>>>
>
> Gracias Horacio,
>
> Tengo un postgresql version 10.5 sobre opensuse
>
> La consulta es bastante larga, es una SELECT  a base de XMLELEMENT , 
> XMLAGG y XMLATTRIBUTES                 , nada mas
>
> El problema se produce cuando la funcion  retorna el valor xml ;
> cuando sacamos muchos datos y el encoding del cliente es distinto del
> que tiene la base de datos.
>
> Si la cantidad de datos es grande y no tiene que cambiar el encoding,
> no hay problema, tampoco lo hay  si reducimos el volumen de datos y
> tenemos distinto encoding
>
> Supongo que tengo que tocar algo de memoria de postgres pero no se que
> parametro tocar y si es asi , ¿se puede hacer dinamicamente ?
>
> Un Saludo
>
Revisando  los codigos veo que el postgresql tiene un limite en el mbutils
https://doxygen.postgresql.org/mbutils_8c.html

if ((Size
<https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
len >= (MaxAllocSize
<https://doxygen.postgresql.org/memutils_8h.html#a74a92b981e9b6aa591c5fbb24efd1dac>
/ (Size
<https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
MAX_CONVERSION_GROWTH
<https://doxygen.postgresql.org/pg__wchar_8h.html#a1a226786d77d0e2baecaafd3d5aafd10>))

https://doxygen.postgresql.org/mbutils_8c.html
#define MaxAllocSize   ((Size
<https://doxygen.postgresql.org/c_8h.html#af9ecec2d692138fab9167164a457cbd4>)
0x3fffffff) /* 1 gigabyte - 1 */
#define MAX_CONVERSION_GROWTH   4

Es decir que el tamaño maximo del objeto puede ser basicamante 256M
menos 1/4 de byte.

El mensaje de error dice que tu objeto es de 492.64M que es mayor al limite.
Lo que se me ocurre es que vas a tener que usar un split para no tener
un XML más grande de 256M.

Ignoro lo que guardas como XML, pero si son fotos tal ves sea mejor
guardar esos caracteres grandes como un CLOB ?

>
>
>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message kernel 2019-08-08 11:47:41 Re: Problemas de tamaño/recodificacion
Previous Message Horacio Miranda 2019-08-08 10:41:59 Re: Problemas de tamaño/recodificacion