- 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.
-
AutorPosts
-
10 de fevereiro de 2012 às 6:15 pm #102757
Thiago Vilhena
ParticipanteBom 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
10 de fevereiro de 2012 às 8:23 pm #102764Regis Araujo
ParticipanteThiago, 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..!
10 de fevereiro de 2012 às 9:21 pm #102775Thiago 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 HINTentende?
e o HINT tbm só funcionou na tabela particionada!
-
AutorPosts
- Você deve fazer login para responder a este tópico.