2012-06-27 11 views
11

Necesito su ayuda para resolver un problema ya que soy bastante nuevo en Postgres y leer los manuales no me ayudó.Postgres distribuyendo datos a través de múltiples discos

Tenemos un servidor con 4 discos duros internos. Hemos creado una base de datos de Postgres con algunas tablas. Queremos poder difundir nuestros datos en estos 4 discos.

Queremos especificar en algún lugar (por ejemplo, la etapa de creación del espacio de tabla) que los datos cargados en un conjunto de tablas se deben distribuir a través de los 4 discos.

¿Puede darnos amablemente la sintaxis o señalarnos en la dirección correcta?

+2

Realmente, ¿por qué no utilizar RAID? – leonbloy

Respuesta

20
  1. crear cuatro espacios de tablas cada uno en un disco diferente (ver: http://www.postgresql.org/docs/current/static/sql-createtablespace.html)
  2. mover el contenido de las tablas para los espacios de tabla de manera que se distribuyen los datos a medida que lo quiere instalar utilizando ALTER TABLE foobar SET tablespace = foospace, ver aquí: http://www.postgresql.org/docs/current/static/sql-altertable.html
  3. mover el contenido de los índices de las tablas para los espacios de tabla utilizando alter index idx_foo set tablespace = spacefoo, ver aquí: http://www.postgresql.org/docs/current/static/sql-alterindex.html
+0

, así que hice esto para una tabla (78 GB en el disco). la nueva ruta muestra ahora que se usó 78G, pero el uso del disco en la partición original permaneció sin cambios. ¿Cómo reclamo el espacio original? – keredson

+0

resulta que un 'vacío' lo hizo. pasar la aspiradora solo por la mesa por sí solo, sin embargo, no era muy extraño. – keredson

7

la mejor manera es crear una matriz RAID-0 o RAID-10 y dejar que el sistema operativo manejar esto para ti. RAID-0 no tiene redundancia, por lo que cualquier fallo de un solo disco es catastrófico. RAID-10 permite que cualquier disco falle y se mantenga trabajando correctamente con un buen rendimiento. Evite RAID-5 o RAID-6 debido a un rendimiento de escritura muy pobre.

+0

Incursión puede ser una buena solución al problema, pero no responde la pregunta. Tal vez quiera tener datos específicos en un disco específico, como poner una tabla muy usada en el disco rápido y nada más para que el disco solo sea utilizado por lecturas y escrituras en esta tabla. – Janning

+2

Lo siento pero estás equivocado. El PO declaró: Queremos especificar en algún lugar (por ejemplo, la etapa de creación del espacio de tablas) que los datos cargados en un conjunto de tablas se distribuyan entre los 4 discos. Tenga en cuenta que la cláusula subjuntiva en el paréntesis se toma como una especie de adivinanza sobre cómo hacerlo. Si bien es posible hacerlo con espacios de tabla y no tiene redundancia, la mejor manera para el 99% de todos los usuarios es simplemente ponerlo todo en una gran matriz RAID, ya que todas las tablas se pueden beneficiar de la velocidad combinada más la redundancia. Nit picking realmente no ayuda. –

+0

Tienes razón, Scott. Yo voté por tu respuesta. – Janning

Cuestiones relacionadas