Re: Tablespace en Postgres 8 for windows

From: dario_d_s(at)unitech(dot)com(dot)ar
To: "Leticia Gimenez" <salegi(at)telesurf(dot)com(dot)py>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Tablespace en Postgres 8 for windows
Date: 2005-10-02 21:04:34
Message-ID: 1128287074.19860@netbox.unitech.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

En postgresql un tablespace es la asignación de un directorio en el cual el motor creará archivos para los "segmentos" (definición oracle para objetos que ocupan espacio en un tablespace, o sea tablas, índices, segmentos de rollback y segmentos temporales). Cuando en postgresql se crea un segmento (tablas o índices), se crea un archivo de datos dentro del directorio asignado al tablespace. A este archivo no se le puede indicar el tamaño ni el nombre directamente, no es compartido por otras tablas. O sea, en un tablespace en el cual existan tres tablas, van a existir mínimamente 3 archivos (más un archivo PGVERSION y me gustaría poder confirmar lo de tres archivos, a lo mejor halla algún archivo con metadata creado por el motor pero no tengo ningún postgresql 8.0 a mano). Digo minimamente 3 (+1 + a confirmar) porque cuando la tabla supere el gigabyte, se creará otro archivo. No hay problemas con límite de tamaño de archivo por filesystem.

En un principio tenés un tablespace (/var/lib/pgsql/data por defecto creo), pero mejor es leer el manual, que sabe más que yo. googlear "tablespace site:postgresql.org" y ver los docs.

Debido a que postgresql utiliza un archivo por cada tabla (minimamente), no tenés problemas de contención de acceso a bloques libres de un datafile (salvo que el sistema operativo los tenga, claro). De paso, para los que vienen de oracle y tienen la costumbre de separar índices de tables, oracle (bah, el de "ask Tom") ahora ya no recomienda tan insistentemente separar índices en otro tablespace de las tablas (si que se separen en discos distintos, pero eso es en casi cualquier motor aparentemente), debido al modo "locally managed" de los tablespaces, sugiere que, antes que eso, se separen los redo log. Corre el consejo para postgresql, separar los archivos WAL de todo lo demás (disco dedicado exclusivamente a WAL). Respecto a tablespaces y tablas, algo a extrañar serían tablas particionadas. Hay que implementarlo con vistas y tablespaces a nivel motor. (bueno, si hay un error, avisen, así lo entendí yo hasta ahora, q vengo desde oracle)

respecto a los archivos y donde los ves fisicamente, creo que consultando pg_class, hay una columna que dice file oid o similar, que tiene el número del archivo que usa una tabla dentro del "location" del tablespace que tiene asignado la tabla. Pero no te serviría de nada salvo saber que tamaño tiene el archivo, y no la tabla. El archivo va a contener la tabla, más versiones de bloques, más espacio listo para usar (devuelto por el vacuum cuando no se lo devuelve al S.O.)

No hay tablespace de segmentos rollback, porque el motor no sobreescribe un bloque que se quiere actualizar ni deja la versión anterior en otro lugar, escribe otro bloque en el mismo archivo y le hace saber al motor que hay una nueva versión del bloque. (resumidamente)

Saludos.

Leticia Gimenez wrote ..
> Buenas...
>
> Alguien podria guiarme en la creacion de tablespaces? donde veo fisicamente
> estos archivos? no se maneja como oracle? yo trabajo con oracle hace 3
> años y ahora estoy empezando con postgres y la parte que todavia me es
> muy abstracto es la parte de los tablespaces y la ubicacion fisica de la
> base de datos....
>
> Desde ya muchas gracias!
>
> Saludos Cordiales.
>
>
> Lic. Leticia Giménez Bianchetti
> Analista Desarrollador de Sistemas Informáticos.
> Cel: (595 991) 718739
> Msn: salegi(at)hotmail(dot)com

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hilario Machuca 2005-10-03 01:12:47 Re: instalacion en WIN2000
Previous Message Rafael De_Linares 2005-10-02 20:13:29 a vueltas con la transferencia de datos