Fala pessoal, espero que estejam todos muito bem! Sei que faz algum tempo desde o último post, mas pretendo retomar as publicações a partir de agora. Para recomeçar com tudo, vamos falar sobre como um DBA do SQL Server conseguiu otimizar o desempenho no PostgreSQL. O desafio era otimizar a query abaixo: A query é relativamente simples, porém, o grande desafio está na cardinalidade. Estamos lidando com um alto volume de dados e uma modelagem N:N, o que tornou o tuning bastante desafiador. Após a execução do plano, pude observar alguns pontos. Criamos índices para aprimorar a consulta, mas mesmo assim, nada disso resultou em um desempenho aceitável para a query. Para a galera do SQL Server (assim como eu rs), podemos utilizar o comando: EXPLAIN (FORMAT JSON, VERBOSE, ANALYZE) no PgAdmin para visualizar o plano de execução de forma gráfica. Ufa, isso realmente facilitou minha vida. Foi então que comecei a analisar os dados e desmembrar a query, percebendo que estavam sendo rec
Fala pessoal belezura? Hoje quero mostrar para vocês como fiz para realizar um tuning mágico em um cliente aqui da consultoria, espero que gostem. Vou mostrar a query original para vocês, claro com dados fakes e nome fake da tabela. Essa query gera o seguinte plano: Eu peguei a query pelo plano, então quando vi o plano já sabia que era um union com acesso a tabela 3 x, a partir desse momento fui tentar entender o que o dev queria fazer com isso. Vou quebrar as 3 queries do union para entendemos juntos: Nessa primeira query ele queria simplesmente verificar quantas linhas tinham na tabela com o filtro de da data "maior", pegando também a maior data de carga, o resto ele coloca como 0 para que ele some tudo na CTE e fique com uma linha só. Depois ele faz a mesma lógica para pegar as linhas que são maiores que 7 dias, considerando a data de hoje: Por último ele faz isso para a tabela Depois ele junta tudo isso em uma agregação na sub query: Legal, agora que
Fala pessoal, beleza? Hoje gostaria de compartilhar com vocês um script que fiz há algum tempo, quando trabalhava em uma consultoria especializada em seguros, precisei fazer esse script porque muitas vezes precisávamos pegar algumas amostras de dados de produção e jogar em uma base de homologação e como a base era muito grande, 11 tb (isso mesmo 11 TB!!!) não era viável ficar "tombando" a base de produção para uma base de homologação, então fiz um script onde você passa o nome da tabela ele faz um script de insert, mas não é apenas isso, pois para fazer isso existe um recurso chamado "Gerar script" do próprio management studio, na procedure que fiz e irei compartilhar com vocês, podemos passar filtros, usar DISTINCT, hints e escolher se queremos trazer a coluna com identity ou não! Achei bem bacana, me foi útil durante um bom tempo e sei que ajudou uma galera da empresa, hoje espero que ajude mais pessoas! Exemplo de como executar o script e o resultado dela:
Comentários
Postar um comentário