5 votos

PostGIS en la Optimización de Grupo espacialmente cerca entidades físicamente en el disco

Estoy trabajando en mi primera base de datos PostGIS y tenía la esperanza de encontrar algunas mejoras de rendimiento para vivir de representación.

Estoy de representación en un mapa directamente desde un PostGIS (9.1, 2.0) db que contiene una importación de datos de OSM (utilizando imposm3). Lo que es más importante, mis caminos de mesa es de alrededor de 30 GB y es la representación de un poco más lento de lo que me gustaría. En el futuro, voy a ser el uso generalizado de las alternativas para el detallado y completo caminos de mesa en los más altos niveles de zoom, pero por ahora sólo tengo que renderizar en razonablemente bajos niveles de zoom. Ya he tomado nota de algunos de PostGIS específicos de sugerencias de optimización y estos han hecho un buen impacto en el rendimiento.

Mi pregunta es si sería factible y vale la pena para reorganizar las entidades de que en mis caminos de mesa son almacenados en el disco. Por ejemplo, me imagino que si estoy en la consulta de un barrio-tamaño de área y el cerrado de las entidades se encuentran en el mismo disco físico de la página, el rendimiento sería mucho mejor que si se les ordenó basado en OSM presentación de la orden (que me temo que son ahora). Me pregunto si hay alguna de las utilidades o sugerido medio de la reordenación de las entidades en el disco.

Alternativamente, podría tal vez se benefician de la creación de nuevas tablas más pequeñas espacialmente separado de los más grandes, de 30 gb de mesa?

Gracias!

Editar:

La mitad de la terquedad y la mitad por curiosidad, me fui por delante y corrió CLUSTER table ON hash_index y este terminó por hacer mi tabla de rendimiento ligeramente peor. Después de hacer un poco de búsqueda y aprendizaje, llegué a la conclusión de que la primera cosa que uno debe hacer cada vez es EXPLAIN query. Terminó de que hubo algún tipo de barbaridades con los tipos y mis consultas, ni siquiera utilizando el índice.

Voy a agregar esto sobre todo como un PSA a alguien que podría viento hasta aquí en busca de la agrupación solución: compruebe que sus índices son correctos y ejecutar explain para asegurarse de que está siendo utilizado.

7voto

NilObject Puntos 7874

Depende, naturalmente. Si su representación sólo tiene que espacialmente escanear un "par" (miles) registros de dibujar y, a continuación, la agrupación física puede ayudar un poco. Sin embargo, si su representación tiene que escanear 100s de miles de registros (escenario clásico: me encontrarás en todas las carreteras en esta plaza, pero ignoran las carreteras locales), los clústeres no hará mucha diferencia, mientras que pre-ordenar los datos en escala apropiada tipos (autopistas de la tabla, arterias mesa, etc).

El clúster simplemente, solo tienes que:

CLUSTER mytable USING myspatialindex;

Para un clúster con un poco más fuerte garantía de homogeneidad espacial:

CREATE INDEX myhashidx ON mytable (ST_GeoHash(geom));
CLUSTER mytable USING myhashidx;

Este utiliza un procesador quad-árbol de descomposición del clúster, lo que ayuda a garantizar que "cerca de" las cosas están cerca, de un modo más genérico, r-árbol bajo el estándar de índice espacial no.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X