Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
¿Cuándo se actualiza un índice parcial en PostgreSQL?

Estoy haciendo un ajuste de rendimiento en una de las mesas más grandes de nuestro proyecto. Mientras leía sobre índices, encontré el índice parcial en PostgreSQL. Esta parece una muy buena idea para poner índices solo en las filas a las que se accede con frecuencia.

Sin embargo, no puedo averiguar cómo se actualiza el índice parcial. Por ejemplo, tengo una tabla con las siguientes columnas:

 task_uuid, job_id, enqueued_at, updated_at, task_status task_status= ENQUEUED, RUNNING, ASSIGNED, FAILED

Buscamos los registros que están en estado ENQUEUED con mucha frecuencia. Si agregamos un índice parcial en (task_uuid, task_status) , creará una clave única y mejorará el rendimiento. Pero quiero saber qué sucede cuando el registro se actualiza, cuando actualizamos el estado del registro RUNNING . (task_uuid, task_status) sigue siendo único, pero ¿se eliminará del índice parcial? ya que el registro no cumple la condición.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si agregamos un índice parcial en (task_uuid, task_status), creará una clave única y mejorará el rendimiento.

Solo lo creará como único si lo especifica en la definición del índice. De lo contrario, no será un índice único, incluso esas columnas son únicas.

Cuando se actualiza un registro para que ya no coincida con el predicado WHERE del índice, no le sucede nada al índice. Todavía tiene un puntero a la fila, solo apunta a algo que ya no es válido. Si especificó el índice como ÚNICO, al insertar una tupla de índice en conflicto, seguirá el puntero de la tupla anterior a la tabla, se dará cuenta de que no es válida y permitirá que continúe la inserción.

La próxima vez que se aspire la mesa, se limpiarán esos punteros obsoletos. Las tablas de cola con índices parciales por lo general deben aspirarse con frecuencia (más frecuentemente que la predeterminada) porque el índice se hincha fácilmente. La configuración de Autovac depende de la fracción de las filas de la tabla obsoletas, no de la fracción de las filas del índice obsoletas. Para índices parciales, estas fracciones no son iguales. (Por otro lado, no parece tener un estado de "COMPLETADO". Si las tareas completadas se eliminan de inmediato, tal vez la tabla de la cola permanezca lo suficientemente pequeña como para que esto no importe).

Además, cuando un escaneo de índice sigue el puntero del índice a la tabla y encuentra que la fila ya no es visible para nadie , marcará la entrada del índice como inactiva. Entonces, los futuros escaneos de índices no tendrán que saltar inútilmente a la mesa. Pero este "microvacío" solo ocurre para escaneos de índice regulares, no escaneos de mapa de bits, y solo ocurre para consultas realizadas en el maestro, no para cualquiera realizado solo en un modo de espera en caliente.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda