Arquivos

Archive for the ‘SQL Server’ Category

Era uma vez um projeto de livro…

29 de julho de 2014 6 comentários

Fala galera,

image

A alguns anos atrás eu comecei a escrever um livro sobre otimização de consultas com o apoio do Gustavo Maia e o Luti trabalhando na revisão… na época até tentei falar com algumas (várias) editoras pra ver se eu tinha algum tipo de apoio por parte delas, tentei até a Microsoft Brasil… mas nada… acabou que ninguém além de eu mesmo teve interesse na publicação do livro… o projeto esfriou e eu desanimei…

Anos se passaram e eu não escrevi mais nada, o arquivo ficou lá perdido numa pastinha chamada “livros” … Smiley triste … como eu sei que não vou voltar nesse projeto… resolvi decretar sua morte e publicar o rascunho pra vocês… eu cheguei a escrever umas 20 páginas de conteúdo, então fica ai pra vocês pra série “vai que interessa”…

Segue o link para download:

http://mcflyamorim.files.wordpress.com/2014/07/otimizac3a7c3a3o-de-consultas-no-sql-server.pdf

Espero que gostem e de alguma forma seja útil… Quem sabe um dia não volto a pensar nisso ? Quem sabe… por hora tenho outros planos (ondemand, ondemand…)…

Abraços.

Fabiano Amorim

CategoriasLivro, SQL Server

Database cast – Log de transações

2 de julho de 2014 3 comentários

Fala galera, tive a honra em participar de mais um databasecast com os brothers Mauro, Wagner e Ricardo Rezende (a.k.a. Wolverine ;P)… Desta vez falamos sobre Log de transações… Segue o link:

http://imasters.com.br/banco-de-dados/databasecast-log-de-banco-de-dados/

Hope you like it!

Abs.

Fabiano

Arquivos, SQLSat284 e Fórum Tecnico MS Brasil

28 de abril de 2014 1 comentário

Fala galera, os últimos dias foram corridos porém extremamente prazerosos.

Fiz duas apresentações, uma na MS Brasil onde falei sobre Otimizador de Consultas do SQL2014 e outra no SQLSat284 em POA onde falei sobre Tuning do Início ao Fim.

Segue o link para download dos arquivos utilizados nas minhas sessões:

Fórum Tecnico na MS Brasil “Novidades para otimização e performance no SQL Server 2014”: http://1drv.ms/1fmpsuI

SQLSat284 – “Tuning do Início ao Fim”: http://1drv.ms/1m2Hv7z

Algumas imagens dos ppts:

Fórum técnico na Microsoft Brasil:

clip_image002

clip_image004

SQLSat284 em POA:

clip_image006

clip_image008

Databasecast–Indexação

16 de setembro de 2013 2 comentários

Galera, está no ar o database cast que gravei com o pessoal do Imasters.

http://imasters.com.br/banco-de-dados/sql-server/databasecast-indices/

Espero que gostem… O bate papo foi bem legal…

Abs.

Fabiano

Fabiano vs Me empresta um livro ?

2 de abril de 2013 6 comentários

Ontem um amigo meu disse que queria estudar sobre performance e se aprofundar no SQL Server e perguntou se eu tinha algum livro para emprestar pra ele…

Separei os seguintes livros de minha biblioteca:

image

Esses são livros que considero essenciais para todo profissional SQL Server que quer se aprofundar no assunto performance. É importante dizer que existe uma GRANDE diferença entre alguém que sabe a melhor prática e alguém que sabe porque a melhor prática é a melhor prática… Como nós já sabemos no SQL Server quase tudo depende, ou seja, depende do cenário, depende da tabela, depende do índice, depende do número de modificações que a tabela sofre, depende do collate, depende do número de CPUs, depende do número de memória disponível, depende das estatísticas disponíveis, depende do trafego de rede, depende do perfil (OLTP ou OLAP), depende de diversas configurações… ou seja, depende.

Entenda como funciona para saber onde usar, quando usar e quando não usar.

Fica a dica!

E como diria o Sir. Itzik na assinatura do livro que ele me deu…

image

Winking smile

CategoriasLivro, SQL Server

Sorteio, SQL DBA Bundle ($1.895) de graça! Red-Gate!

14 de março de 2013 43 comentários

E ai galera beleza ?

Como alguns de vocês já sabem eu faço parte do programa Friends of Red-Gate e realmente eu gosto MUITO das ferramentas deles.

Atualmente tenho trabalhado muito com o SQL Monitor, e simplesmente não consigo mais viver sem o SQL Prompt, quando vou trabalhar em uma máquina sem ele, ficou maluco!

A Red-Gate também patrocina o meu blog, por isso tem o logozinho deles ai em cima! Smile Se vocês ainda não conhecem os produtos deles, de verdade, vale a pena dar uma olhada.

Tenho um relacionamento muito bom com eles e recentemente eles me enviaram uma licença do SQL DBA Bundle pra eu sortear no blog Smile, exato, são $1.895 doletas em produtos deles.

Mano, é sério… isso significa, SQL Prompt + SQL Monitor + SQL Compare + SQL Backup PRO e várias outras ferramentas de graça… imperdível…

Pra participar do sorteio é fácil:

Publique o seguinte texto no seu facebook ou twitter:

“Eu quero ganhar um SQL DBA Bundle da Red-Gate (http://redg.at/Zma34t). Se você também quer leia mais no http://blogfabiano.com

Coloque um link comprovando sua de sua publicação aqui no meu blog!

Se você não tem facebook, pode usar o twitter, orkut, ou mesmo fazer um reblog desse post no seu blog, o importante é não esquecer de incluir um comentário comprovando sua publicação da promoção.

No mês que vem eu vou fazer o sorteio usando algum serviço de sorteio online qualquer, gravar um video com o sorteio e publicar o resultado no meu blog.

Regras:

  • Se eu achar que tenho que mudar alguma coisa no sorteio, eu mudo e pronto e acabo, quem manda nessa porra sou eu. Hot smile
  • Se o vencedor não se manifestar em até 4 dias, farei outro sorteio.
  • Caso eu não tenha o e-mail do vencedor, eu vou avisar no dia da publicação do resultado, este deve me enviar seu e-mail no prazo dos 4 dias.
  • Só tenho 1 licença, ou seja, haverá apenas 1 ganhador.
  • 1 dia antes de fazer o sorteio aviso aqui no meu blog.
    That’s all follks, good luck!

Top 5 Hard-earned Lessons of a DBA
Read lesson two, ‘Beating Backup Corruption’ by Shawn McGehee, and learn how to:
– Avoid subtle failings that could end up defeating your recovery plans.
– Ensure your data pages are corruption free.
– Put together a multi-pronged defence against data corruption.
Learn to beat backup corruption.

red

Artigo–DBCC OPTIMIZER_WHAT IF

4 de fevereiro de 2013 Deixe um comentário

Artigo novo publicado no Simple-Talk, check it out:

 

“SQL Server’s Query optimiser judges the best query plan from the data in the relevant tables and the server’s hardware. How, then, can you investigate the query plans being generated for slow-running queries on a customer’s production server when you can neither access the server, nor recreate the database from a backup?”

http://www.simple-talk.com/sql/database-administration/using-optimizer_whatif-and-statsstream-to-simulate-a-production-environment/

Abs.

Free Execution Plans e-book, e é meu :-)

31 de outubro de 2011 6 comentários

Galera, essa notícia eu vinha esperando por um bom tempo. O Simple-Talk publicou um e-book com vários artigos que escrevi sobre os operadors dos planos de execução.

Você pode fazer o download do livro aqui, é “di gratis”: http://www.simple-talk.com/books/sql-books/complete-showplan-operators/

Espero que gostem, eu realmente adorei escrever os article, e agora fico hiper mega feliz de ver que isso virou um livro Open-mouthed smile.

image

Tem vários textos que eu gosto muito, mas eu acho que meu predileto é o seguinte:

To show the functionality of the Eager Spool we’ll go back in time a bit, to the time when I was just a project being planned, but some other geeks working intensively with databases.

It was Halloween; the cold winter’s night was black as pitch, (I really don’t know if was winter, but I thought it would sound more thrilling) and the wind howled in the trees. It was 1976 and the children was demanding “tricks or treat” in the houses. The full moon shone and illuminated the whole city when suddenly, some clouds crossed the moon making the night even more dark and gloomy. It was possible to smell and taste the tension in the air like a stretched rubber band so close to burst. People walking in the street felt that someone was observing them, and when they looked closely in their back, they see two red eyes waiting and looking out for a prey unprotected.

Was that their imagination? Or just the wrong night to work with databases?

Meanwhile in a place not far away, an update was started on a database by a skeleton staff, to update the salary by 10% of all employees who earned less than $ 25.000,00 dollars.  Their feelings of impending doom increased as the query failed to complete in the expected time. When, at length, it did, they found to their horror that every employee had their pay increased to $ 25.000,00. It was the stuff of DBA nightmares.

 

Agora uma boa notícia para quem vai no SQLSaturday 100, a Red-Gate me enviou alguns livros impressos pra eu poder distribuir pra galera Laughing out loud. É isso mesmo, vou distribuir alguns livros na minha sessão, portanto compareça.

2011-10-31_12-12-37_279

Não ficou muito grande, portanto você consegue ler rápidinho Winking smile.

Thanks so much for Red-Gate and Simple Talk to make this possible, I loved!

Abs.

Como remover um Plano de execução do CachePlan

5 de janeiro de 2010 5 comentários

Pessoal depois de alguns bons dias de férias, volto com uma dica bem legal que li.

Para limpar o PlanCache de uma instância SQL utilizamos o DBCC FREEPROCCACHE, para limpar o cache de apenas um banco específico utilizamos o DBCC FLUSHPROCINDB (<DBID_DO_BANCO>). Mas fica uma pergunta, tem alguma forma de limpar o cache de apenas um determinado comando?

Sim. Podemos utilizar o DBCC FREEPROCCACHE passando o [sys.dm_exec_cached_plans].PlanHandle, por ex:

SELECT cp.plan_handle, st.[text]
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st

O comando acima retorna o PlanHandle dos planos, depois e só passar ele como parâmetro para o FREEPROCCACHE

DBCC FREEPROCCACHE(0x06000500AF643E18B840C234000000000000000000000000)

Créditos para o GlennBerry.

Abraços

CategoriasSQL Server

Query Optimizer VS Foreign Keys

10 de novembro de 2009 Deixe um comentário

Pessoal, depois da WebCast que fiz falando sobre o Query Optimizer, quero compartilhar um caso onde na minha opinião ele infelizmente não foi tão esperto assim :-(

Por sinal o vídeo já esta disponível para download…. é só acessar o link de cadastro para a webcast e baixar…

Veja bem, no meu banco de dados tenho 2 tabelas assim…

CONCC030 – Tabela de propostas, e CONCC036 tabela que relaciona uma proposta com uma Cota.

As chaves das duas tabelas são, ID_Empresa, ID_Documento, ID_Tipo_Documento. Na tabela CONCC036 eu tenho uma foreign key forçando a integridade entre as tabelas. A foreign key é formada pelas 3 colunas que acabei de mencionar.

Tenho uma consulta assim:

SELECT ID_Bem
  FROM CONCC030
INNER JOIN CONCC036
    ON CONCC036.ID_Tipo_Documento = CONCC030.ID_Tipo_Documento
   AND CONCC036.ID_Documento = CONCC030.ID_Documento
WHERE CONCC036.ID_Empresa = 1
   AND CONCC036.ID_Cota = 123456

Bom, como podemos observar, o join não esta sendo feito pelas 3 colunas da foreign key… esta faltando especificar a coluna ID_Empresa, porém ela esta no WHERE, fazendo um filtro por ID_Empresa = 1.

O que podemos concluir com isso, ora, o QO sabe que existe uma foreign key entre as tabelas e sabe quais são as colunas da FK, porque então não utilizar o filtro da tabela CONCC036.ID_Empresa = 1 (WHERE) e também aplicar este filtro na CONCC030.ID_Empresa ?

Com certeza o desenvolvedor que escreveu esta consulta não especificou o ID_Empresa no join justamente porque ele sabia que a coluna seria utilizada no where. Mas isso causou um problema para o QO, pois ele não conseguiu utilizar um índice que temos para fazer o link entre as duas tabelas, já que o índice esta ordenado justamente pela ordem, ID_Empresa, ID_Documento, ID_Tipo_Documento….

O QO poderia muito bem aplicar o filtro em CONCC030.ID_Empresa = 1 e utilizar as outras colunas no join para fazer o filtro…

Outra coisa triste, a funcionalidade que mencionei na WebCast sobre ele descartar as tabelas caso a existência de uma foreign key, só funciona para foreign Keys ligadas por apenas uma coluna… ou seja, se você tiver uma foreign key que liga uma tabela por mais de uma coluna e tentar utilizar a funcionalidade que mencionei, não vai conseguir…

Bom, fica a seguinte dica, ao escrever uma consulta, SEMPRE(does not matter what!) especifique todas as colunas no seu join…

Abraço…

CategoriasSQL Server
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 57 outros seguidores