Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #85580
    mpvargas
    Participante

      Caros Amigos,
      Atualmente tenho uma tabela particionada no banco, mas não consigo enxergar se a mesma traz algum benefício até pelo fato de usarmos um ERP um tanto complicado. Como iremos trocar o servidor e estou mudando o RAID, distribuindo tablespaces e logs em discos diferentes, tenho certeza que vou ter um ganho de performance. Gostaria de saber se é interessante eu manter o particionamento da tabela ou não? E como faço para saber se a mesma está trazendo benefício no meu ambiente atual?
      Obrigado.

      #85582
      Marcio68Almeida
      Participante

        Tabelas são particionadas para facilitar as transações, sempre são sugeridas para grandes massas de dados, acima de milhões de linhas…
        Imagine uma tabela que registre todas as transações de uma companhia telefônica, todas as ligações, mensagens, etc…
        Então você vai “quebrar” a tabela em partes, facilitando assim as transações de insert, update, delete e query.
        Normalmente quebra-se essas tabelas por ano, dependendo do número de transações, pode ser quabrado por semestre e até mesmo por mês.
        A grande vantagem é que quando eu for consultar uma informação lá de janeiro de 1989, não preciso consultar toda a tabela, apenas consulto a partição onde a informação se encontra.
        Quando vou atualizar uma informação, vou atualizar a parte do índice que está diretamente relacionada à parte da tabela.
        A desvantagem é que, quando se cria um índice, você tem que cria-lo particionado e respeitando as restrições de particionamento.
        Outra desvantagem é que, toda vez que chega o momento de gerar uma nova partição, o DBA tem que estar atento para não deixar passar e ter dor de cabeça depois…

        Se sua tabela não é grande, não tem motivo, se é grande, verifique os critérios de particionamento e seus respectivos índices…

        #85587
        mpvargas
        Participante

          Marcio,
          Minha Tabela atualmente tem aproximadamente 5milhões de linhas…
          Ela está particionada por ano… mas os índices não são particionados…
          Eu utilizo a query abaixo para Monitorar os processos e exibir SQL em execução:

          Select p.spid, s.sid, s.serial#, p.pga_used_mem, p.pga_alloc_mem, p.pga_freeable_mem, pga_max_mem, sql.sql_text,
          s.status, s.server, s.logon_time,
          TO_CHAR (TRUNC (last_call_et / 3600), ‘009’) || ‘:’ ||
          Case When TRUNC (last_call_et / 3600) >= 1 Then
          TO_CHAR (MOD ((last_call_et – (3600 * TRUNC (last_call_et / 3600))) / 3600, 2) * 60, ’09’)
          Else
          TO_CHAR (MOD (last_call_et / 3600, 2) * 60, ’09’)
          End inatividade, s.machine, s.program
          From v$session s, v$process p, (Select distinct sql_text, address From v$sql sql ) sql
          Where s.username = ‘MSIGA’
          And status = ‘ACTIVE’
          And s.paddr = p.addr (+)
          And s.sql_address = sql.address (+)
          Order by p.spid, s.last_call_et desc

          A minha dúvida é que quando eu executo a query acima, o SQL que se refere a tabela aparece repetida várias vezes, exibindo vários SPID, vários SID e diversos valores de alocação de PGA.

          Esse é o funcionamento normal. As linhas se repetem mesmo?

          #85592
          Marcio68Almeida
          Participante

            Sobre as colunas que aparecem repetidas…
            Na coluna PROGRAM aparece entre parênteses (P0001) ???
            Se sim, é por que o pessoal está usando parallel querye…
            Teoricamente é uma boa opção se bem definida…
            Quantas CPUs tem o seu servidor ???

            Índices não particionados em tabelas particionadas é o mesmo que colocar gasolina comum em uma BMW, funciona, mas…

            #85600
            mpvargas
            Participante

              Os SQLs que aparecem repetidos, na coluna PROGRAM aparecem números diferentes… (P001), (P002), (P003)…
              Quanto ao uso de parallel queries, aparecem o seu uso no Spotlight.
              Minha CPU tem 1 processador com 4 núcleos (quad core).
              Quanto ao uso dos índices particionados, como eu faço pra criá-los?
              Obrigado.

              #85604
              Marcio68Almeida
              Participante

                [quote=”mpvargas”:1wb3pe4e]Os SQLs que aparecem repetidos, na coluna PROGRAM aparecem números diferentes… (P001), (P002), (P003)…
                Quanto ao uso de parallel queries, aparecem o seu uso no Spotlight.
                Minha CPU tem 1 processador com 4 núcleos (quad core).
                Quanto ao uso dos índices particionados, como eu faço pra criá-los?
                Obrigado.[/quote]
                Os números são diferentes por que é a divisão doprocesso P000, P001, P002 e P003 significa que o processo foi “quebrado” em quatro para processamento paralelo.
                Se o seu servidor possuisse mais processadores, apareceriam mais P00x
                Para criar o índice particionado basta seguir as mesmas parametrizações do partionamento da tabela. A sintaxe você vai encontrar no nosso amigo google… 😀
                Também é bom lembrar que colocar as partições (tanto de tabela quanto de índice) em tablespaces diferentes ajuda na administração e manutenção do banco.

                #85619
                mpvargas
                Participante

                  Márcio,
                  Para a tabela particionada, na verdade aparecem mais de 10 processos.
                  O fato do processo estar sendo dividido e estar usando processamento paralelo significa que o banco está funcionando de forma correta, digo, com a configuração correta?
                  Então no caso estou tendo ganhos com o particionamento da tabela e seria interessante mantê-la particionada e particionar também os índices?
                  Obrigado pela ajuda.

                  #85620
                  Marcio68Almeida
                  Participante

                    Bom…
                    Tem coisas que só é possível responder acompahando os processos.
                    A princípio, se eles estão usando parallel query em uma tabela particionada é por que estão usando, ou tentando usar, as melhores formas de programação…
                    É aconselhavel manter a tabela particionada como já se encontra.
                    É aconselhável refazer os índices de forma que também sejam particionados.
                    Também é aconselhável rever as consultas para ver se estão aproveitando os recursos que o banco oferece para performace.

                    #85623
                    mpvargas
                    Participante

                      OK Márcio
                      Obrigado pela ajuda.
                      😀

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