Otimização de tabela SQL Server

08/03/2019

0

Olá pessoa!
Sou um usuário de nível intermediário do SQL Server e utilizo no meu dia a dia para consultas básicas, no entanto a estrutura do BD de onde trabalho é bem ruim, assim eu acabo por fazer as vezes do DBA tendo que criar e manter algumas tabelas, utilizo o SQL Server 2008. O meu problema é, tenho hoje uma tabela de transações que é atualizada todo dia com a inserção de pelo menos uns 900 mil registros e hoje esta tabela conta com mais de 100 milhões deles, não consigo ter uma chave primária pois tenho alguns campos como número da conta, número de cartão, data da transação e valor, ou seja, estes registros podem se repetir. O que eu fiz até o momento foi criar um indicie simples não clusterizado para conta, cartão e data de transação, um vez que são os principais campos usados nas nossas pesquisas e joins, o problema é que esta tabela esta ficando muito pesada, para cada consulta simples(como trazer o total transacionado nos últimos 6 meses por exemplo) demora em média 1 hora, para inserção dos registros, também é este tempo.
Alguém consegue me dar alguma dica de que tipo de índice eu poderia usar, se é melhor particionar ou algo do tipo, me desculpem pelo tamanho do texto e desde já agradeço a força.
Diogo Jorge

Diogo Jorge

Responder

Post mais votado

08/03/2019

Oi Diogo,

Cara nesse caso já não sei te dizer, 900 mil novos registros diários?

Dependendo do que for, tem que verificar a infra, no caso chegar o server, se tem memoria o suficiente, tipo de disco, tudo isso influenciara também na performance.

Não sei se o SQL apresenta plano de execução estimado para inserts, pode ser interessante dar uma olhada no plano de execução estimado, com isso ele apresentará ponto de maior incidência de tempo, indicará índices para serem criados e tal.

Atenciosamente,

Alex Lekao

Alex Lekao
Responder

Mais Posts

08/03/2019

Alex Lekao

Oi Diego, bom dia!!!

Já experimentou criar Views para ver se ajuda no retorno das respostas?

Em alguns casos que tive, eu substitui os joins por outer apply, e a performance foi considerável, alem de aumentar a gama de tratativas em um único lugar, melhorando os resultados.

Espero que tenha te ajudado de alguma forma.

Atenciosamente,
Responder

08/03/2019

Diogo Jorge

Fala Alex, blza?

Obrigado pela dica, cheguei a ver sim a implementação de views em alguns fóruns, mas será que isto também melhoraria a performance no que se trata dos inserts? Como eu disse, todos os dias carregamos uma média de 900 mil novos registros, este processo de inserção também demora bastante.
Responder

09/03/2019

Fabiano Carvalho

Boa tarde.
Voce precisa avaliar o servidor como um todo, monitorar o disco, processador e memoria e também olhar o plano de execução do SQL como ja mencionado.
Não basta somente criar um indice e pronto...
Como está o tempo de respostas dos arquivos MDF e LDF das bases? Se estiver acima de 80 é algo a ser analisado (Disco), verificar IOPS, enfim, não é algo tão simples de se resolver.
E sobre a chave primaria aconselho MUITO voce criar uma, nem que seja uma coluna nova, irá alivar um pouco a memória.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar