Re: Varlenas

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

In response to

Responses

  • Re: Varlenas at 2005-03-19 18:45:48 from Juan Pablo Espino

Browse pgsql-es-ayuda by date

  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