Re: CANTIDAD MAXIMA DE TABLAS EN UN SCHEMA

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>
Cc: Álvaro Hernández Tortosa <aht(at)8kdata(dot)com>, FLOR AVILA ELIAS <favila(at)ditelgroup(dot)com>, Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: CANTIDAD MAXIMA DE TABLAS EN UN SCHEMA
Date: 2017-12-21 00:55:03
Message-ID: 20171221005503.ewvscyn3f2ae4cgu@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jaime Casanova escribió:

> En realidad, deberías tener problemas mucho antes de llegar a esa
> cantidad de tablas.
> Estaba pensando, por ejemplo, en que al crear una tabla se consumen al
> menos 3 oid (1 por la tabla y 2 por los tipos de datos asociados que
> se crean) y si la tabla tiene al menos un PK se consumen 5 oid y si
> creas constraints u otros objetos se consumirán mas oid.
>
> Pero asumamos el caso más simple, una tabla sin constraints, sólo 3
> oids consumidos por tabla; considerando que un oid es un tipo de dato
> de 32bits sólo se podrían crear cerca de 1431 millones de tablas. Pero
> siendo que crearás índices, funciones, constraints y otros lo más
> probable es que solo puedas crear unas decenas o centenas de millones
> de tablas.

Esto es cierto, pero los OIDs sólo tienen que ser únicos dentro de un
mismo catálogo. Si bien usan todos el mismo generador, el sistema está
preparado para buscar un nuevo número si el que se asigna ya está usado.
Entonces los constraints, como están en otro catálogo, no disminuyen el
límite de tablas, pero los índices sí. Pero cada tabla tiene además un
tipo compuesto y un tipo de array, o sea que cada tabla necesita 3 OIDs
en pg_class; si agregas uno para el índice (que también estará en
pg_class) usará 4 OIDs, así que sólo podrías tener 2^32-1 / 4 es decir
unos 2^30 tablas (esto son 1073741824 que está muy cerca de lo que logró
AHT el 2013 -- aunque él no tenía índice, así que su límite absoluto por
este motivo era el doble). Esto siempre y cuando no pongas columnas que
necesiten una tabla toast, porque entonces agregas dos OIDs más en
pg_class, con lo que llegas a unas 2^29 (quinientos millones de tablas?)

En todo caso, más que seguro que Flor no necesita mil millones de tablas
:-)

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2017-12-21 00:56:32 Re: Error con logical replication
Previous Message Jaime Casanova 2017-12-21 00:36:30 Re: CANTIDAD MAXIMA DE TABLAS EN UN SCHEMA