Olá pessoal,
No post de hoje estou compartilhando um vídeo em que explico como otimizar uma consulta que faz um JOIN entre 2 tabelas localizadas em Bancos de Dados distintos: 1 tabela local e 1 tabela remota, acessada via dblink (ver Imagem 01). Em curtas palavras, uma instrução SQL distribuída.
Este tipo de consulta existe normalmente em médias e grandes empresas, que possuem N bancos de dados que precisam comunicar-se uns com os outros, trocar dados etc. Para otimizá-la utilizaremos o hint DRIVING_SITE, que eu conheci há muito tempo (estudando SQL Tuning), mas que consegui utilizar somente ontem, no momento em que um Desenvolvedor da empresa em que trabalho entrou em contato comigo para ajudá-lo a otimizar um SQL com as características mencionadas. Este SQL estava demorando aproximadamente 30s para executar. Adivinha o que eu fiz para otimizá-lo e fazer com ele fosse executado em apenas 0,5s? A resposta está no vídeo que compartilhei através deste LINK.
Obs.: O vídeo está protegido com senha.Para recebê-la assine a newsletter que encontra-se no painel direito deste blog.
Imagem 01 - Acesso remoto via dblink |
Este tipo de consulta existe normalmente em médias e grandes empresas, que possuem N bancos de dados que precisam comunicar-se uns com os outros, trocar dados etc. Para otimizá-la utilizaremos o hint DRIVING_SITE, que eu conheci há muito tempo (estudando SQL Tuning), mas que consegui utilizar somente ontem, no momento em que um Desenvolvedor da empresa em que trabalho entrou em contato comigo para ajudá-lo a otimizar um SQL com as características mencionadas. Este SQL estava demorando aproximadamente 30s para executar. Adivinha o que eu fiz para otimizá-lo e fazer com ele fosse executado em apenas 0,5s? A resposta está no vídeo que compartilhei através deste LINK.
Obs.: O vídeo está protegido com senha.Para recebê-la assine a newsletter que encontra-se no painel direito deste blog.
Qualquer dúvida sobre o assunto, é só deixar um comentário neste post!
[]s
Belo Post Fabio,
ResponderExcluirAprendo bastante em seu blog.....alias, poderia fazer um post sobre Wallet no futuro? Encrypt, etc!!
Abs
Olá Peter, obrigado pelo comentário. O post sobre wallet entrará na fila!
Excluir[]s
Bom dia,
ResponderExcluirFiz o cadastro conforme orientação para obter a senha para assistir ao vídeo, contudo não recebi a senha.
Me manda e-mail que eu verifico seu cadastro e te mando a senha.
Excluir[]s
Fiz a inscrição e confirmou.
ResponderExcluirPara receber a senha tenho que enviar e-mail para esse grupo? Qual o próximo passo?
Pedro, após a confirmação vc recebe automaticamente um e-mail com a senha.
Excluir[]s
Fábio,
ResponderExcluirPor exemplo eu na base local executar um SQL
Select *
from tb1@remoto
Se eu usar:
Select /*+DRIVING_SITE(tb1)*/ *
from tb1@remoto
Teoricamente ele deveria me retornar mais rapido?
Ou é só nos casos de join?
Fiz este teste aqui e ele trás no mesmo tempo.
Como sei se ele esta usando o Hint ??
Obrigado.
Bruno, este hint é recomendado somente em consultas distribuídas. Uma consulta distribuída envolve no mínimo 1 tabela local e outra remota. No seu exemplo só existe a consulta remota.
ResponderExcluirQto ao uso deste hint, o PE local não muda e no BD remoto não há informações ela, portanto, você só conseguirá descobrir se o SQL está usando este hint comparando o tempo antes e depois de usá-lo.
[]s
Fábio bom dia,
ResponderExcluirE no caso de existirem mais de uma tabela remota? Como ficaria a utilização do Hint?
Allan, a resposta está no link https://community.oracle.com/thread/3602350?start=0&tstart=0. Se tiver qualquer dúvida posterior, deixe um novo comentário.
Excluir[]s