Re: Que son estos esquemas en mi BD

Lists: pgsql-es-ayuda
From: "Ing (dot) Marcos Luís Ortíz Valmaseda" <mlortiz(at)uci(dot)cu>
To: rperezm(at)uci(dot)cu
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Que son estos esquemas en mi BD
Date: 2009-11-15 14:55:39
Message-ID: 4B00166B.6050003@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

ReynierPM escribió:
> Buenas tardes a todos:
> Hoy estaba revisando una BD que hacía más de 2 meses que no miraba de
> cerca y me tope con los siguientes esquemas:
> - information_schema
> - pg_catalog
> - pg_toast_tmp_1
> - pg_toast_tmp_2
> - pg_toast_tmp_3
> - pg_toast_tmp_4
> - pg_toast_tmp_5
> - pg_toast_tmp_6
> - pg_toast_tmp_7
> - pg_toast_tmp_8
> - pg_toast_tmp_9
> - public
> Me puede decir alguien que significan cada uno de ellos excepto el
> "public" que es donde están mis tablas claro está. ¿Los puedo eliminar
> sin temor a corromper la BD?
>
> Saludos
> --
> TIP 7: no olvides aumentar la configuración del "free space map"
No, hermano, esos esquemas no los puedes eliminar.
Information_schema es un estandar de SQL el cual deben tenerlos todos
los SGBD Relacionales, y consiste en una seria de vistas que
proporcionan informacion acerca de la base de datos en cuestion. Puedes
leerte el Capitulo 33. The information schema del Manual Oficial de
PostgreSQL-8.4.1.

Y los otros son los llamados catálogos del sistema, donde el sistema
relacional almacena los metadatos, asi como la informacion de las tablas
y las columnas. Son en si tablas que almacenas informacion de todo lo
que ocurre de forma interna en el gestor.
Primeramente TOAST o The Oversized-Attribute Storage Technique
Es un tipo de almacenamiento físico en la base de datos cuando se va a
trabajar con archivos que pesan bastante. Con esta técnica se puede
almacenar 1GB.
Para profundizar más sobre el tema, puedes leerte el manual oficial,
Capítulo 53. Database Physical Storage.

pg_toast_tmp es una nueva característica introducida en esta versión de
PostgreSQL por Tom Lane, lo cual permite reconocer estas tablas como
temporales en el codigo a bajo nivel, lo cual puede traer consigo
optimización, ya que por ejemplo no se registran los cambios en el
sistema de WAL y además se usa para el acceso buffers locales y no los
shared_buffers.
Esto corrigió un bug en el sistema que hacía que cuando el backend
inesperadamente mantenía las referencias de un archivo abierto en una
tabla temporal de tipo TOAST.

Saludos

--
--
"For me, the purpose is, at least partly, to have joy. Programmers often
feel joy when they can concentrate on the creative side of programming,
so Ruby is designed to make programmers happy."
Yukihiro Matsumoto (Matz), Creator of the Ruby Language

Ing. Marcos Luís Ortíz Valmaseda
System DBA && Rails New User
Centro de Tecnologías de Almacenamiento y Anális de Datos (CENTALAD)
Universidad de las Ciencias Informáticas

Linux User # 418229

http://www.freebsd.org
http://www.postgresql-es.org
http://www.postgresql.org
http://www.planetpostgresql.org
http://www.rubyonrails.org
http://www.ruby-lang.org


From: ReynierPM <rperezm(at)uci(dot)cu>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Que son estos esquemas en mi BD
Date: 2009-11-15 18:39:06
Message-ID: 4B004ACA.3080909@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Buenas tardes a todos:
Hoy estaba revisando una BD que hacía más de 2 meses que no miraba de
cerca y me tope con los siguientes esquemas:
- information_schema
- pg_catalog
- pg_toast_tmp_1
- pg_toast_tmp_2
- pg_toast_tmp_3
- pg_toast_tmp_4
- pg_toast_tmp_5
- pg_toast_tmp_6
- pg_toast_tmp_7
- pg_toast_tmp_8
- pg_toast_tmp_9
- public
Me puede decir alguien que significan cada uno de ellos excepto el
"public" que es donde están mis tablas claro está. ¿Los puedo eliminar
sin temor a corromper la BD?

Saludos


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: ReynierPM <rperezm(at)uci(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Que son estos esquemas en mi BD
Date: 2009-11-16 19:10:56
Message-ID: 20091116191056.GD3669@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

ReynierPM escribió:
> Buenas tardes a todos:
> Hoy estaba revisando una BD que hacía más de 2 meses que no miraba
> de cerca y me tope con los siguientes esquemas:
> - information_schema
> - pg_catalog
> - pg_toast_tmp_1
> - pg_toast_tmp_2
> - pg_toast_tmp_3
> - pg_toast_tmp_4
> - pg_toast_tmp_5
> - pg_toast_tmp_6
> - pg_toast_tmp_7
> - pg_toast_tmp_8
> - pg_toast_tmp_9
> - public
> Me puede decir alguien que significan cada uno de ellos excepto el
> "public" que es donde están mis tablas claro está. ¿Los puedo
> eliminar sin temor a corromper la BD?

Puedes eliminar pg_temp_XXX y pg_toast_tmp_XXX siempre y cuando no esté
funcionando el backend numerado XXX. Los backends que están funcionando
los puedes ver con
select * from pg_stat_get_backend_idset()

information_schema lo puedes eliminar; se usa para implementar el
INFORMATION SCHEMA que es un esquema definido por el estándar SQL, pero
aparte de eso no sirve para nada. Supongo que alguna herramienta
externa puede que lo use. En todo caso, si lo eliminas y después te das
cuenta que lo necesitas, puedes volver a crearlo ejecutando el script
information_schema.sql.

pg_catalog no puedes eliminarlo. Es el único schema reservado del
sistema (además de pg_temp y pg_toast_tmp obviamente)

public lo puedes eliminar, siempre y cuando no tengas tablas en él.
(O mejor dicho, si lo eliminas, se van a eliminar todas tus tablas
también). Si lo eliminas es recomendable crear otro schema donde crear
tablas, y además definir el SEARCH_PATH de manera que automáticamente
las tablas se creen en otro esquema.

--
Alvaro Herrera Vendo parcela en Valdivia:
http://www.portalinmobiliario.com/propiedades/fichas.asp?PropID=749682
"Las cosas son buenas o malas segun las hace nuestra opinión" (Lisias)


From: "Ing (dot) Marcos Luís Ortíz Valmaseda" <mlortiz(at)uci(dot)cu>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: ReynierPM <rperezm(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Que son estos esquemas en mi BD
Date: 2009-11-16 23:19:24
Message-ID: 4B01DDFC.9060105@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:
> ReynierPM escribió:
>
>> Buenas tardes a todos:
>> Hoy estaba revisando una BD que hacía más de 2 meses que no miraba
>> de cerca y me tope con los siguientes esquemas:
>> - information_schema
>> - pg_catalog
>> - pg_toast_tmp_1
>> - pg_toast_tmp_2
>> - pg_toast_tmp_3
>> - pg_toast_tmp_4
>> - pg_toast_tmp_5
>> - pg_toast_tmp_6
>> - pg_toast_tmp_7
>> - pg_toast_tmp_8
>> - pg_toast_tmp_9
>> - public
>> Me puede decir alguien que significan cada uno de ellos excepto el
>> "public" que es donde están mis tablas claro está. ¿Los puedo
>> eliminar sin temor a corromper la BD?
>>
>
> Puedes eliminar pg_temp_XXX y pg_toast_tmp_XXX siempre y cuando no esté
> funcionando el backend numerado XXX. Los backends que están funcionando
> los puedes ver con
> select * from pg_stat_get_backend_idset()
>
> information_schema lo puedes eliminar; se usa para implementar el
> INFORMATION SCHEMA que es un esquema definido por el estándar SQL, pero
> aparte de eso no sirve para nada. Supongo que alguna herramienta
> externa puede que lo use. En todo caso, si lo eliminas y después te das
> cuenta que lo necesitas, puedes volver a crearlo ejecutando el script
> information_schema.sql.
>
> pg_catalog no puedes eliminarlo. Es el único schema reservado del
> sistema (además de pg_temp y pg_toast_tmp obviamente)
>
> public lo puedes eliminar, siempre y cuando no tengas tablas en él.
> (O mejor dicho, si lo eliminas, se van a eliminar todas tus tablas
> también). Si lo eliminas es recomendable crear otro schema donde crear
> tablas, y además definir el SEARCH_PATH de manera que automáticamente
> las tablas se creen en otro esquema.
>
>
Umm, esto del schema public si no lo sabía. Lo tendré en cuenta a partir
de ahora para el desarrollo
de nuevas aplicaciones. La eliminación del information_schema es a gusto
de cada cual; a mi no me gusta eliminarlo por el hecho de que
es un estándar SQL y todos los SGBD relacionales lo tienen incluido. Si
lo vemos de un modo paranoico, a lo mejor sería un brecha que podría
aprovechar algún atacante, aunque según la literatura especializada del
tema como el libro "Database Hacker Handbook" aseguran que PostgreSQL es
posiblemente la base de datos más segura existente hoy en día, y
creánme, los que lo dicen son expertos en el tema.

Saludos
P.D: Ahora no recuerdo bien el nombre exacto del libro, mañana les digo

--
--
"For me, the purpose is, at least partly, to have joy. Programmers often
feel joy when they can concentrate on the creative side of programming,
so Ruby is designed to make programmers happy."
Yukihiro Matsumoto (Matz), Creator of the Ruby Language

Ing. Marcos Luís Ortíz Valmaseda
System DBA && Rails New User
Centro de Tecnologías de Almacenamiento y Anális de Datos (CENTALAD)
Universidad de las Ciencias Informáticas

Linux User # 418229

http://www.freebsd.org
http://www.postgresql-es.org
http://www.postgresql.org
http://www.planetpostgresql.org
http://www.rubyonrails.org
http://www.ruby-lang.org