2009-07-23 11 views
7

¿Cuáles son las formas efectivas de escribir consultas más rápidas específicamente en Postgres? Por favor, no incluya prácticas de bases de datos generalmente buenas (por ejemplo, índices de uso o normalización). Estoy buscando sugerencias, como que las tablas derivadas funcionan más rápido que las subconsultas o que el uso de las funciones de cadena de Python parece más rápido que las funciones de cadena pgsql. Idealmente, esta lista incluiría ejemplos y consejos del mundo real.Postgres Tuning

Gracias.

Respuesta

7

Asegúrese de aspirar periódicamente. El sistema de autovacío actual hace un buen trabajo en la mayoría de los casos, pero aún así puede ser útil ejecutar una aspiración manual completa periódicamente (en nuestro caso, esto ocurre aproximadamente una vez al año).

Los índices solo se usan con fiabilidad si hay estadísticas disponibles para la tabla. Asegúrese de ejecutar un análisis de vacío después de cualquier cambio importante en una tabla (toneladas de inserciones/eliminaciones) para garantizar que los índices se seleccionen correctamente.

La configuración predeterminada de Postgres está optimizada para un sistema con recursos relativamente modestos y discos lentos. Si su sistema tiene discos más rápidos (posiblemente), una CPU más rápida (probablemente) o mucha más RAM (casi con certeza), entonces asegúrese de ajustar los diversos parámetros en función de eso. Lo principal es aumentar el tamaño del búfer, pero si tiene discos extremadamente rápidos (especialmente SSD), sería una buena idea reducir también las estimaciones de costos para los tiempos de búsqueda.

También he tenido algunas experiencias con combinaciones ligeramente lentas en consultas bastante complejas, pero estas son mucho más difíciles de generalizar. En general, ayuda a ser más explícito con la consulta de lo que puede requerirse en una base de datos con un optimizador de consultas más sofisticado (por ejemplo, Oracle o DB2).

+0

Sí me he dado cuenta de vacío automático realmente no no funciona demasiado bien con los sistemas que tienen grandes cargas de datos diariamente. Al menos "analizamos" a diario. –

8

La única regla irrompible que he encontrado hasta ahora es que no hay reglas irrompibles.

A veces la subconsulta es más rápida, a veces la unión es más rápida. A veces quieres plpgsql, a veces quieres otro pl/*.

aconseja al ser adecuada la mayoría:

  1. Asegúrese de que la aspiradora y analizar (encender autovacuum)
  2. uso explique analizar y aprender a leer su pozo de salida
  3. juego con la base de datos. intenta hacer las cosas de forma extraña. por lo general, no ayuda. pero a veces lo hace, y aprendes nuevos trucos.