postgresql - relación - Colocar la columna en Postgres en un gran conjunto de datos
insertar datos pgadmin 4 (2)
Así que tengo una tabla con un gran conjunto de datos y esta tabla tiene tres columnas que me gustaría eliminar.
La pregunta es: ¿cómo lidiará Postgres con esto?
¿Recorrerá todas las entradas o solo actualizará la información de mapeo sin mucha sobrecarga? ¿Puedo simplemente hacer una ALTER TABLE
o debo usar swap-table en este caso particular?
Y, si hay alguna diferencia, las tres columnas tienen una longitud fija (dos enteros y uno numérico).
Lo siento si ya se ha preguntado, pero Google no pudo encontrar ninguna pregunta / artículo relacionado ...
ALTER TABLE DROP COLUMN solo deshabilita columnas en las tablas del sistema. Es muy rápido, pero no elimina datos de archivos de pila. Tiene que hacer VACÍO COMPLETO más tarde para compactar el espacio de archivos asignado. Así que ALTER TABLE DROP COLUMN es muy rápido. Y si desea compactar archivos, tiene que llamar más lento (con BLOQUEO exclusivo) VACÍO COMPLETO.
Google puede ser inútil para esta pregunta, pero el manual rara vez falla :
El formulario
DROP COLUMN
no elimina físicamente la columna, sino que simplemente la hace invisible para las operaciones de SQL. Las siguientes operaciones de inserción y actualización en la tabla almacenarán un valor nulo para la columna. Por lo tanto, eliminar una columna es rápido, pero no reducirá inmediatamente el tamaño en el disco de su tabla, ya que el espacio ocupado por la columna eliminada no se reclama. El espacio se reclamará a lo largo del tiempo a medida que se actualicen las filas existentes.
Y:
Para forzar una reescritura inmediata de la tabla, puede usar VACUUM FULL, CLUSTER o una de las formas de ALTER TABLE que fuerza una reescritura. Esto no produce ningún cambio semánticamente visible en la tabla, pero elimina los datos que ya no son útiles.
Específicamente, la columna attisdropped
en la tabla de catálogo del sistema pg_attribute
se establece en TRUE
.