- Este tópico contém 7 respostas, 6 vozes e foi atualizado pela última vez 15 anos atrás por
burga.
-
AutorPosts
-
11 de março de 2011 às 6:29 pm #98523
ghiggi
ParticipanteOlá,
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?
11 de março de 2011 às 6:57 pm #98524fsitja
ParticipantePelo 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
15 de março de 2011 às 9:45 pm #98542gauss
ParticipanteOnde você encontrou informações sobre essa boa prática?
16 de março de 2011 às 4:16 am #98544ghiggi
ParticipanteHow 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
16 de março de 2011 às 5:38 am #98546burga
ParticipanteEssa “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,16 de março de 2011 às 3:57 pm #98547Peterson
Participanteeh 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.
16 de março de 2011 às 5:04 pm #98548hudsona
ParticipanteEmbora 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.16 de março de 2011 às 6:35 pm #98551burga
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.
-
AutorPosts
- Você deve fazer login para responder a este tópico.