2010-09-15 14 views
8

He creado una base de datos en PostgreSQL, llamémosla testdb.¿Existe alguna limitación en el número de tablas que puede tener una base de datos PostgreSQL?

que tienen un conjunto genérico de tablas dentro de esta base de datos, xxx_table_one, xxx_table_two y xxx_table_three.

Ahora, tengo el código de Python donde quiero crear dinámicamente y eliminar "conjuntos" de estas 3 tablas en mi base de datos con un identificador único en el nombre de la tabla que distingue "conjuntos" diferentes entre sí, p.

Set 1
testdb.aaa_table_one
testdb.aaa_table_two
testdb.aaa_table_three

Set 2
testdb.bbb_table_one
testdb.bbb_table_two
testdb.bbb_table_three

Ahí Como quiero hacerlo de esta manera es mantener múltiples colecciones GRANDES de datos relacionados entre sí separados. Necesito sobrescribir regularmente las colecciones de datos individuales, y es fácil si solo podemos soltar la tabla de colecciones de datos y recrear un nuevo conjunto completo de tablas. Además, debo mencionar que las diferentes colecciones de datos se ajustan a los mismos esquemas, por lo que pude guardar todas las colecciones de datos en 1 conjunto de tablas usando un identificador para distinguir las colecciones de datos en lugar de separarlas mediante el uso de diferentes tablas.

Quiero saber, algunas cosas

  1. PostgreSQL limitar el número de tablas por base de datos?
  2. ¿Cuál es el efecto sobre el rendimiento, si lo hay, de tener una gran cantidad de tablas en 1 base de datos?
  3. ¿Cuál es el efecto en el rendimiento de guardar las colecciones de datos en diferentes conjuntos de tablas en comparación con guardarlas todas en el mismo conjunto, p. Supongo que tendría que escribir más consultas si quiero consultar múltiples colecciones de datos a la vez cuando los datos se distribuyen entre las tablas en comparación con solo 1 conjunto de tablas.
+1

Definir "grande". Crear y soltar tablas suele ser el enfoque equivocado. – mpen

+5

Do. No. Hacer. Esta. Es un truco de diseño terrible. Muchas personas lo prueban, todos los que lo intentan lo lamentan. Use valores clave como columnas dentro de las tablas; no crees tablas como esta. –

+0

Grande podría ser de aproximadamente 1,000,000 - 10,000,000 de registros. No es tan grande, pero cada colección de datos es una recopilación de datos pre-procesados ​​que se actualiza una o dos veces al mes. – sizeight

Respuesta

14

PostgreSQL no tiene muchos límites, su hardware es mucho más limitado, ahí es donde encuentra la mayoría de los problemas. http://www.postgresql.org/about/

Puede tener 2^32 tablas en una sola base de datos, algo más de 4 mil millones.

+0

La conclusión a la que se hace referencia en esta respuesta es un crédito de una investigación de un colaborador de la comunidad PostgreSQL ver [PGCon 2013] (http://www.pgcon.org/2013/schedule/attachments/283_Billion_Tables_Project-PgCon2013.pdf) – pazfernando

2
  1. PostgreSQL no impone un límite directo sobre esto, su sistema operativo lo hace (que depende del tamaño de directorio máximo)
  2. Esto puede depender de su sistema operativo también. Algunos sistemas de archivos se vuelven más lentos con directorios grandes.
  3. PostgreSQL no podrá optimizar las consultas si están en diferentes tablas. Por lo tanto, usar menos tablas (o una sola tabla) debería ser más eficiente
0

Si sus datos no están relacionados, creo que sus tablas podrían estar en un esquema diferente, y luego usaría SET search_path TO schema1, public por ejemplo, de esta manera no tendría que generar dinámicamente nombres de tabla en sus consultas. Estoy planeando probar esta estructura en una gran base de datos que almacena registros y otra información de seguimiento.

También puede cambiar su tablespace si su sistema operativo tiene un límite o si tiene un tamaño de directorio grande.

Cuestiones relacionadas