From: | Leonel Nunez <lnunez(at)enelserver(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
Cc: | Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>, Pgsql-Es-Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Varlenas |
Date: | 2005-03-19 18:10:29 |
Message-ID: | 423C6B15.4070906@enelserver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Alvaro Herrera wrote:
>On Sat, Mar 19, 2005 at 12:27:31PM -0500, Juan Pablo Espino wrote:
>
>Hola,
>
>
>
>>Entiendo que varlena es una estructura muy utilizada en el código de
>>postgres, se define como un arreglo (vector o formación) de longitud
>>variable, var = variable, len = length, a = array
>>y la estructura en sí es
>>
>>struct
>>{
>> int32 vl_len;
>> char vl_data[1];
>>} varlena;
>>
>>Las cuatro primeras posiciones (sizeof(int32)) de una varlena indican
>>el tamaño de la cadena que empieza en la quinta posicion. vl_data es
>>una cadena de un byte sin caracter nulo (NULL). Hasta ahora esto es
>>lo que entiendo sobre las varlenas, sin embargo no veo como se aplica
>>a tantas cosas según dicen. En la lista de hackers hay algunos
>>ejemplos, pero aun no comprendo bien, alguien podría ampliarme sobre
>>este tema?
>>
>>
>
>Todos los campos de longitud variable son varlenas. Ejemplos: TEXT,
>VARCHAR(n), CHAR(n), NUMERIC(m,n), BYTEA, BIT VARYING, arrays de
>cualquier tipo, ROW(), etc.
>
>En el caso de los strings uno pensaria que es mejor usar strings
>terminados en \0 como en C, pero eso no funciona porque en cada tupla es
>necesario encontrar el siguiente atributo, lo cual seria muy lento si
>tuvieras que recorrer completo el atributo anterior. Por eso se usan
>varlenas para poder hacer un "seek" leyendo solamente el largo.
>
>Para el caso de BYTEA es obvio que no podrias usar un string terminado
>en \0.
>
>Ademas, la infraestructura de varlena permite hacer TOAST sin gran
>dificultad (ver doc. de TOAST en la seccion Internals).
>
>
>
como diria Pinky : Naaaaarrf !
leonel
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Pablo Espino | 2005-03-19 18:45:48 | Re: Varlenas |
Previous Message | Alvaro Herrera | 2005-03-19 17:37:41 | Re: Varlenas |