Pregunta

Tengo un "pequeño" problema. Hace una semana, mi base de datos estaba alcanzando capasity disco completo. He eliminado muchas filas en diferentes mesas tratando de liberar espacio en disco. Después de wich he intentado ejecutar un wich vacío total no se ha completado.

Lo que yo quiero saber es. Cuando dejé el vacío de compliting totalmente Qué se deja ningún archivos temporales en el disco que tengo que eliminar manualy? Ahora tengo un wich base de datos se encuentra en un disco capasity 100%, cosa que sin necesidad de decir es un gran problema.

¿Algún consejo para liberar espacio en disco?

Estoy corriendo SUSE con postgres 8.1.4 base de datos.

¿Fue útil?

Solución

En primer lugar:

Actualizar

Incluso si no se puede a 8.2, 8.3 o 8.4 -. Al menos actualizar a la más reciente 8.1 (que es en el momento 8.1.17, 8.1.18, pero será en 1-2 días)

En segundo lugar:. Diagnosticar cuál es el problema

du herramienta para diagnosticar exactamente dónde se fue el espacio. Qué directorio está ocupando demasiado espacio?

df lo que es el espacio usado total, y luego comprobar cuánto de ello es el directorio de PostgreSQL.

La mejor opción es:

cd YOUR_PGDATA_DIR
du -sk *
cd base
du -sk *
cd LARGEST DIR FROM PREVIOUS COMMAND
du -sk * | sort -nr | head

Ahora, que usted sabe en que directorio en PGDATA está utilizando el espacio que puede hacer algo al respecto.

si se trata de troncos o pg_temp -. Pg reinicio o eliminar registros (! Pg_clog y pg_xlog no son registros en sentido común de la palabra, no borrar nada de allí)

Si se trata de algo en su directorio base, entonces:

Los directorios numéricos en el directorio de base se refieren a las bases de datos. Puede comprobarlo con:

select oid, datname from pg_database;

Cuando se conoce la base de datos que utiliza la mayor parte del espacio, conectarse a él, y comprobar qué archivos están utilizando la mayor parte del espacio.

Los nombres de archivo serán numérica con la opción de ".digits" sufijo - este sufijo es (por ahora) irrelevante, y se puede comprobar qué es exactamente el archivo representa mediante la emisión:

select relname from pg_class  where relfilenode = <NUMBER_FROM_FILE_NAME>;

Una vez que sepa qué tablas / índices de utilizar la mayor parte del espacio - se puede vacío completo, o (mucho mejor) tema comandos de grupo en ellos.

Otros consejos

En la nueva tangente a su problema, usted puede averiguar lo que en la base de datos está utilizando una gran cantidad de espacio utilizando un consulta. Eso puede ayudar a localizar candidatos para truncar para recuperar suficiente espacio de trabajo para limpiar los que tienen información borrada.

Tenga en cuenta que la eliminación de una gran cantidad de filas, pero no pasar la aspiradora con frecuencia para mantener el espacio en disco en jaque a menudo conducen a una condición llamada índice de hinchazón, que vacío total no ayuda a nada. Usted sabrá que está allí cuando la consulta sugerí muestra la mayor parte de su espacio está ocupado por los índices en lugar de mesas regulares. Tendrá que CLUSTER, que necesita tanto espacio libre en el disco como la propia tabla para reconstruir todo, para recuperarse de ese problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top