Pular para o conteúdo
  • Este tópico contém 7 respostas, 6 vozes e foi atualizado pela última vez 15 anos atrás por burga.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #98523
    ghiggi
    Participante

      Olá,

      Uma boa prática em Oracle é deixar as tabelas e os índices em tablespaces separados, isso melhora o desempenho, pois em uma consulta SQL que utilizar índices o Oracle pode buscar dados da tabela e dos índices em paralelo.

      Sei que para criar um índice em uma tablespace diferente da default do Owner basta acrescentar o trecho abaixo no comando de criação do índice.

      tablespace nome_tablespace;

      A dúvida é: Existe alguma forma de definir uma tablespace padrão(diferente da default do Owner) para os índices, eliminando a necessidade de ficar citando a tablespace em cada criação de índice?

      #98524
      fsitja
      Participante

        Pelo que sei esse é o comportamento padrão e não há como alterar. Se não for especificada explicitamente uma tablespace o índice vai para a tablespace da tabela correspondente.

        … specify the name of the tablespace to hold the index, index partition, or index subpartition. If you omit this clause, then Oracle Database creates the index in the default tablespace of the owner of the schema containing the index.

        http://download.oracle.com/docs/cd/E118 … s_5012.htm

        #98542
        gauss
        Participante

          Onde você encontrou informações sobre essa boa prática?

          #98544
          ghiggi
          Participante

            How Indexes Are Stored

            When you create an index, Oracle automatically allocates an index segment to hold the index’s data in a tablespace. You can control allocation of space for an index’s segment and use of this reserved space in the following ways:

            *

            Set the storage parameters for the index segment to control the allocation of the index segment’s extents.
            *

            Set the PCTFREE parameter for the index segment to control the free space in the data blocks that constitute the index segment’s extents.

            The tablespace of an index’s segment is either the owner’s default tablespace or a tablespace specifically named in the CREATE INDEX statement. You do not have to place an index in the same tablespace as its associated table. Furthermore, you can improve performance of queries that use an index by storing an index and its table in different tablespaces located on different disk drives, because Oracle can retrieve both index and table data in parallel.

            Extraído de: http://download.oracle.com/docs/cd/B141 … #sthref951

            #98546
            burga
            Participante

              Essa “boa prática” não é tão verdade quanto se imagina… Dê uma lida nesta discussão, onde o Tom trata melhor do assunto:

              http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1463404632043

              Espero que ajude 🙂
              Abraços,

              #98547
              Peterson
              Participante

                eh Burga, realmente é uma concepção diferente pensar na separação de tablespaces por tamanho dos objetos alocados e não por cabeças de I/O…

                Muito bom o tópico que você postou do Tom.

                #98548
                hudsona
                Participante

                  Embora a questão do desempenho não é mais o principal fator dessa prática, a questão da organização do ambiente continua valida.
                  Eu penso que é mais limpo um ambiente com objetos separados por tipo.

                  #98551
                  burga
                  Participante

                    [quote=”Peterson”:ocirmzre]eh Burga, realmente é uma concepção diferente pensar na separação de tablespaces por tamanho dos objetos alocados e não por cabeças de I/O…

                    Muito bom o tópico que você postou do Tom.[/quote]
                    Isso aí Peterson, o tópico me esclareceu bastante coisa também. Eu já tinha visto o Portilho dizendo pra não confiar totalmente na documentação da Oracle, foi aí a primeira prova mais concreta que peguei de que a documentação realmente não é 100%… 😆 é rir pra não chorar…

                    [quote=”hudsona”:ocirmzre]Embora a questão do desempenho não é mais o principal fator dessa prática, a questão da organização do ambiente continua valida.
                    Eu penso que é mais limpo um ambiente com objetos separados por tipo.[/quote]
                    É verdade Hudson, concordo com você, acho que faltou eu me expressar um pouco melhor na mensagem anterior… O problema está em pensar que

                    …you can improve performance of queries that use an index by storing an index and its table in different tablespaces located on different disk drives…

                    seja uma “boa prática” pelas razões descritas, enquanto que, como o Tom explicou (muito bem), existem outras maneiras de se obter um melhor desempenho.

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