Ir para o conteúdo

 Voltar a Geral - usuá...
Tela cheia

otimização do banco postgis!

22 de Julho de 2008, 15:11 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 17 vezes

ola,

 alguem ja otimizou as consultas espaciais do postgis, eu estou usando a função distance() mas esta demorando muito(quase 1.2min) cada consulta, as outras funções como intersection  e contains estão OK com um tempo normal, ja me falaram sobre um ajuste fino do banco, mas não consegui melhora nenhuma, ou então a criação de indices nas tabelas, mesmo assim não melhorou.

alguem tem uma idéia?

 

muito obrigado

Autor: jefferson bernardino


44 comentários

  • E156b5fa1ee212798acb39f8e5175a92?only path=false&size=50&d=404Felipe dos Santos Costa(usuário não autenticado)
    22 de Julho de 2008, 15:36

     

    Olá Jefferson,

    Manda a consulta.
    Você já usou o modo Analyze do Pgadmin3?

    Abraço,

    Felipe

    2008/7/22 :
    > Forum: Geral - usuários e desenvolvedores
    > Thread: otimização do banco postgis!
    > Author: jefferson bernardino
    > Posted: 2008-07-22 15:11:33.234181-03
    >
    > ola,
    >
    > alguem ja otimizou as consultas espaciais do postgis, eu estou usando a
    > função distance() mas esta demorando muito(quase 1.2min) cada consulta, as
    > outras funções como intersection e contains estão OK com um tempo normal,
    > ja me falaram sobre um ajuste fino do banco, mas não consegui melhora
    > nenhuma, ou então a criação de indices nas tabelas, mesmo assim não
    > melhorou.
    >
    > alguem tem uma idéia?
    >
    >
    >
    > muito obrigado
    >
    > Recebendo correspondência demais? Gerencie suas notificações em:
    > www.​soft​ware​publ​ico.​gov.​br/n​otif​icat​ions​/man​age

    --
    Bendirei o senhor em todo o tempo,
    Na minha boca sempre o seu louvor
    Sl 34 (33),1–16

    • Fba9055db1a8b7abd16e2ec6e8e2d6b1?only path=false&size=50&d=404jefferson bernardino(usuário não autenticado)
      23 de Julho de 2008, 13:47

       

      Ola Felipe como vai?

      a consulta é esta estou selecionando o nome do rio e a distancia que ele esta em razão das unidades de conservação, ela busca apenas os rios que estão a determinada distancia da unidade de consevação em questão, estou usando a função transform para aceitar qualquer projeção(que é pega na interface)  esta é apenas uma consulta, tenho mais algumas(esta é a que mais demora).

      esta consulta estava demorando cerca de 1.4min, mas estava dando uma olhada no manual do postgis e vi que se eu efetuasse a consulta através de apenas um ponto(centroid) ela iria mais rapido, agora com a função centroid demora cerca de 14s para os piores casos. 

      agora sobre o analyze, oq seria?algo como o vacuum?

      muito obrigado e até mais!

      select distinct rios.noriocomp , distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291)))*100000 as distancia
      from rios_ms as rios, temp as temp
      where distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291))) <= 0.015
      and distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291))) != 0");

      • E156b5fa1ee212798acb39f8e5175a92?only path=false&size=50&d=404Felipe dos Santos Costa(usuário não autenticado)
        23 de Julho de 2008, 15:05

         

        Olá Jefferson,

        Você não está usando os índices espaciais na sua consulta.
        Para diminuir o número de feições que serão comparadas você precisa
        usar o operador &&.
        Não sei te explicar direito mas abaixo tem um material que certamente
        te ajudará.
        Quanto ao Analyze do Pgadmin você vai na opção de criação de querys,
        no menu Query > Explain Options > Analyze. Na hora de executar ao
        invés de F5 para executar use o F7 para Explain a consulta.

        Saudações,

        Felipe Costa
        Anexo:
        How do I construct a spatial query?

        The same way you construct any other database query, as an SQL
        combination of return values, functions, and boolean tests.

        For spatial queries, there are two issues that are important to keep
        in mind while constructing your query: is there a spatial index you
        can make use of; and, are you doing expensive calculations on a large
        number of geometries.

        In general, you will want to use the "intersects operator" (&&) which
        tests whether the bounding boxes of features intersect. The reason the
        && operator is useful is because if a spatial index is available to
        speed up the test, the && operator will make use of this. This can
        make queries much much faster.

        You will also make use of spatial functions, such as Distance(),
        ST_Intersects(), ST_Contains() and ST_Within(), among others, to
        narrow down the results of your search. Most spatial queries include
        both an indexed test and a spatial function test. The index test
        serves to limit the number of return tuples to only tuples that might
        meet the condition of interest. The spatial functions are then use to
        test the condition exactly.

        SELECT id, the_geom
        FROM thetable
        WHERE
        the_geom && 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'
        AND
        _ST_Contains(the_geom,'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))');

        2008/7/23 :
        > Forum: Geral - usuários e desenvolvedores
        > Thread: otimização do banco postgis!
        > Author: jefferson bernardino
        > Posted: 2008-07-23 13:47:33.603728-03
        >
        > Ola Felipe como vai?
        >
        > a consulta é esta estou selecionando o nome do rio e a distancia que ele
        > esta em razão das unidades de conservação, ela busca apenas os rios que
        > estão a determinada distancia da unidade de consevação em questão, estou
        > usando a função transform para aceitar qualquer projeção(que é pega na
        > interface) esta é apenas uma consulta, tenho mais algumas(esta é a que mais
        > demora).
        >
        > esta consulta estava demorando cerca de 1.4min, mas estava dando uma olhada
        > no manual do postgis e vi que se eu efetuasse a consulta através de apenas
        > um ponto(centroid) ela iria mais rapido, agora com a função centroid demora
        > cerca de 14s para os piores casos.
        >
        > agora sobre o analyze, oq seria?algo como o vacuum?
        >
        > muito obrigado e até mais!
        >
        > select distinct rios.noriocomp ,
        > distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291)))*100000
        > as distancia
        > from rios_ms as rios, temp as temp
        > where
        > distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291)))
        > and
        > distance(rios.the_geom,centroid(transform(setsrid(temp.the_geom,$proj),4291)))
        > != 0");
        >
        > Recebendo correspondência demais? Gerencie suas notificações em:
        > www.​soft​ware​publ​ico.​gov.​br/n​otif​icat​ions​/man​age

        --
        Bendirei o senhor em todo o tempo,
        Na minha boca sempre o seu louvor
        Sl 34 (33),1–16

        • Fba9055db1a8b7abd16e2ec6e8e2d6b1?only path=false&size=50&d=404jefferson bernardino(usuário não autenticado)
          23 de Julho de 2008, 16:37

           

          muito obrigado felipe, eu até crie os indices mas não consigo utiliza-los, talvez não tenha entendido muito bem este operador &&

          mas mesmo assim vou continuar estudando estas funções.

           

          muito obrigado

acesso à versão beta do i3geosaude

19 de Março de 2015, 10:03, por Desconhecido

Prezados amigos, 



comunidade i3geosaude

7 de Janeiro de 2015, 10:22, por Desconhecido

Prezados Colaboradores,



Primeira Reunião do Grupo de Trabalho do i3Geo ocorre no dia 20 de novembro

6 de Novembro de 2013, 17:46, por Desconhecido

Na manhã do dia 20 de novembro, junto ao Seminário Anual do SISP, acontecerá a 1a. Reunião do Grupo de Trabalho da solução i3Geo, para tratar de necessidades de melhoria ou adaptação da solução disponível no Portal SPB, para uso pela Administração Pública Federal. Os anseios dos dirigentes de TI do Sistema de Administração de Recursos de Tecnologia da Informação – SISP, em busca de soluções disponíveis no Portal do SPB que atendam às necessidades da Administração e de cada Órgão em específico, foram objeto de discussão em reuniões da Comissão de Coordenação do Sistema ao longo de 2013. A formação do Grupo de Trabalho do i3Geo é resultado das atividades já realizadas até o momento entre os órgãos integrantes do SISP na reflexão, modelagem e aprimoramento do conceito e da finalidade do Software Público para a Administração Pública e para a Sociedade.



Testes com o i3Geo (Geosaúde) em Manaus

24 de Setembro de 2013, 11:39, por Desconhecido

Projeto do Departamento de Monitoramento e Avaliação do SUS (DEMAS) do Ministério da Saúde, iniciou os testes e implantação do i3Geo, distribuição "Geosaúde", na Secretaria Municipal de Saúde de Manaus.



Funai cria Portal de mapas baseado em tecnologias livres (i3Geo)

1 de Agosto de 2011, 18:27, por Desconhecido

Autor: Edmar Moretti