Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 14 anos, 1 mês atrás por Thiago Vilhena.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #102757
    Thiago Vilhena
    Participante

      Bom Dia!!
      Pessoal, tenho uma procedure que faz vários selects e talz, dentro de um loop essas coisas.
      Daí primeira coisa que fiz foi PARTICIONAR a tabela, com a tabela particionada.. testei o procedimento, ficou a mesma porcaria tipo 24 horas de processamento, o tempo ficou igual pra tabela PARTICIONADA e pra NAO PARTICIONADA.

      Aí analisei e na PARTICIONADA coloquei um HINT de INDEX SS, aí sim rodou em 16 minutos. Até aí beleza .

      Mas oque eu quero realmente é saber se existe uma maneira de criar uma tabelinha no ORACLE e alterar na procedure para que toda vez que passe nesse select grave na tabela o tempo de elapsed do select.

      VLW

      #102764
      Avatar photoRegis Araujo
      Participante

        Thiago, boa tarde!

        Cara.. só uma colocação.. Particionamento somente é vantagem quando no seu select vc use a chave de particionamento, um exemplo:

        Em uma tabela de vendas particionada por MES, nos seus selects você somente use o campo de produtos na clausula where, desta maneira o select irá fazer um PARTITION RANGE SCAN, ou seja, olhar todas as partições como se fosse uma unica tabela.. O correto é q em todas as tabelas particionadas suas consultas sejam efetuadas pela chave de particionamento..

        Outra coisa.. cuidado ao usar particionamento, devido a licença.. a option de particionamento é cobrada a parte do valor da licença do banco, se o contrato da sua empresa com a Oracle não estiver incluso esta option, vocês poderão ter grandes problemas com auditoria.

        Com relação a gravar o elapse de um select.. ai fica a seu criterio criar uma tabela para armazenar esta informação… mas lembre-se q isto vai onerar o seu processo.. Oq vc pode fazer é gerar um trace do procedimento e ai analisar o trace para computar os tempos.

        Abraços..!

        #102775
        Thiago Vilhena
        Participante

          [quote=”Thunder_Catz”:1kqwtwii]Thiago, boa tarde!

          Cara.. só uma colocação.. Particionamento somente é vantagem quando no seu select vc use a chave de particionamento, um exemplo:

          Em uma tabela de vendas particionada por MES, nos seus selects você somente use o campo de produtos na clausula where, desta maneira o select irá fazer um PARTITION RANGE SCAN, ou seja, olhar todas as partições como se fosse uma unica tabela.. O correto é q em todas as tabelas particionadas suas consultas sejam efetuadas pela chave de particionamento..

          Outra coisa.. cuidado ao usar particionamento, devido a licença.. a option de particionamento é cobrada a parte do valor da licença do banco, se o contrato da sua empresa com a Oracle não estiver incluso esta option, vocês poderão ter grandes problemas com auditoria.

          Com relação a gravar o elapse de um select.. ai fica a seu criterio criar uma tabela para armazenar esta informação… mas lembre-se q isto vai onerar o seu processo.. Oq vc pode fazer é gerar um trace do procedimento e ai analisar o trace para computar os tempos.

          Abraços..![/quote]

          Particionei por mês mesmo, mas aí resolvi particionar não foi nem por causa desse SELECT, é que a maioria das consultas feitas são por range de mês anterior..

          a porcaria é tem um select que coloquei o HINT DE INDEX SS e ele funciona rapidao tipo 14 minutos.
          se eu tirar o HINT ele vai pra 24 horas, mas aí eu preciso arrumar uma maneira de que nao leve 24 horas e não usar o HINT

          entende?

          e o HINT tbm só funcionou na tabela particionada!

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.