Recomendaciones de rendimiento de base de datos (por Azure PSQL)

Hola,

Estamos alojando nuestro foro basado en Discourse en Azure con una instancia de “Azure Database for PostgreSQL”. Una de las ventajas de este servicio son las recomendaciones de rendimiento basadas en las “características de la base de datos” y el uso.
Desde que migramos a Azure, hemos recibido algunas sugerencias sobre índices faltantes y presumiblemente redundantes que me gustaría compartir con ustedes.
Hemos observado un ligero (no muy significativo) incremento general en el rendimiento tras crear estos índices faltantes, pero no pudimos aplicar las recomendaciones de DROP INDEX, ya que podrían romper futuras actualizaciones o migraciones de la base de datos. De todos modos, no podemos determinar si estos índices son seguros de eliminar o si tendrán un efecto negativo en el rendimiento.

A continuación, los índices que Azure nos sugirió crear (impacto “bajo” y “moderado”):
create-indexes.csv (1.5 KB)

Estas son las recomendaciones para índices “ya cubiertos”:

Resumen

Eliminar el índice index_optimized_images_on_upload_id en la tabla public.optimized_images.
Motivo: El índice está cubierto por index_optimized_images_on_upload_id_and_width_and_height.

Eliminar el índice index_post_revisions_on_post_id en la tabla public.post_revisions.
Motivo: El índice está cubierto por index_post_revisions_on_post_id_and_number.

Eliminar el índice post_timings_summary en la tabla public.post_timings.
Motivo: El índice está cubierto por post_timings_unique.

Eliminar el índice index_topic_links_on_topic_id en la tabla public.topic_links.
Motivo: El índice está cubierto por unique_post_links.

Eliminar el índice index_post_uploads_on_post_id en la tabla public.post_uploads.
Motivo: El índice está cubierto por idx_unique_post_uploads.

Deben tomar estas recomendaciones de “DROP” con cautela, ya que creo que solo afectarán el tamaño general de la base de datos en lugar de aumentar el rendimiento. Por ejemplo: toda nuestra base de datos ocupa aproximadamente 120 GB y todas estas recomendaciones liberarían solo 422 MB. Azure mismo define el impacto como “bajo”. Por lo tanto, parece que no es más que una limpieza.

Como mencioné anteriormente, solo quería compartir esto con ustedes, ya que podría ayudar a optimizar el rendimiento un poco. Además de estos índices, Azure no ha proporcionado otras recomendaciones durante el tiempo que hemos estado utilizando sus servicios.

Saludos cordiales,
Sascha

8 Me gusta

Gracias por compartir, algunas de las recomendaciones son un poco extrañas…

CREATE INDEX index_topics_on_category_id ON public.topics USING btree (category_id)
CREATE INDEX index_topics_on_category_id_and_id ON public.topics USING btree (category_id, id)
CREATE INDEX index_topics_on_id_and_category_id ON public.topics USING btree (category_id, id)

Este índice duplicado triplicado que se sugiere tiene una selectividad extremadamente baja; el problema con índices como ese es que el planificador tiende correctamente a ignorarlos. Si solo hay 10 valores diferentes, debes combinarlo con algo más, como por ejemplo topic_id.

En cuanto a los índices poco utilizados, hace unos seis meses ejecutamos algunas estadísticas en la base de datos buscando índices que no habíamos tocado en nuestra infraestructura; eliminamos algunos, pero este tema es un buen recordatorio para nosotros para repetir este proceso.

Gracias por publicar esto.

4 Me gusta

Gracias por tu respuesta y por indicarme estos 3 índices. No había notado esta duplicación triplicada, ya que las recomendaciones no llegaron todas a la vez y las he aplicado poco a poco durante semanas.
Incluso es bastante extraño que no aparezcan dentro de las recomendaciones de DROP. Parece que Azure aún tiene algo de trabajo por hacer :blush: (y tendré que verificar esas recomendaciones dos veces).

Saludos cordiales

1 me gusta