Fabiano Neves's profileFabiano Neves Amorim - S...PhotosBlogListsMore ![]() | Help |
|
|
August 28 Falando sobre Gustavo, Luciano, Laercio, Diego, Junior Galvão e FabianoDepois vou postar as minhas centenas de fotos e videos sobre o Community Zone, mais essa foto que o Diego postou no blog dele ficou show, ... Galera do mal essa eim... É uma honra pra mim pousar do lado desses feras... Valeu Diego. Citação
August 27 Entrevista 1 - Mauro PichilianiPessoal vou dar inicio ao que imagino que seja a primeira de muitas entrevistas que virão.
Minha idéia é a seguinte, iniciar uma séria de entrevistas com especialistas em SQL Server, inicialmente com os MVPs e Colunistas brasileiros, depois com funcionários da Microsoft e então partirei para os MVPs gringos e funcionários da Microsoft Corp.
Já tenho alguns questionários respondidos, irei tentar publicar 1 por semana. O primeiro da Lista é o Mauro Pichiliani que é colunista no imasters.uol.com.br.
Sem mais, vamos ao questionário. Espero que gostem...
1. Vamos começar falando da novidade do momento, quais as novas features do SQL Server 2008 que você acha mais importante, e porque? Nomeie pelo menos 3. a. Bom, o SQL Server 2008 traz uma série de novas funcionalidades. Eu escrevi uma coluna explicando as 10 funcionalidades que mais me impressionaram, a coluna pode ser visualizada no link abaixo: http://imasters.uol.com.br/artigo/9712/sql_server/top_10_funcionalidades_do_sql_server_2008/ b. Dentre as três principais posso citar: 1. As melhorias no Reporting Services, que facilitam a vida de quem precisa criar relatórios bem apresentáveis. 2. Os recursos para compactação, que vão reduzir sensivelmente o espaço utilizado por bancos de dados. 3. Algumas mudanças na linguagem, como o operador MERGE, que é bem interessante e vai facilitar a comparação de dados entre tabelas. 2. Em relação a performance no SQL Server 2008, quais as features você acha mais importante? a. São várias, mas creio que a utilização de filtros nos índices é a feature mais importante que pode melhorar muito a performance se utilizada corretamente. 3. Quais suas dicas para um profissional que está iniciando em SQL Server? a. Eu sempre recomendo a quem está iniciando procurar estudar muito. Outro ponto importante é possuir uma mente aberta, ser criativo e saber improvisar. Muitas vezes os profissionais são conservadores e não arriscam muito, o que pode fazer a diferença no final do dia. 4. O que é necessário para se tornar um usuário Master em SQL Server? a. Apenas uma palavra: Estudo. Obviamente é preciso também muita prática e o famoso jogo de cintura, mas com certeza o estudo é o principal. 5. O que é necessário para se tornar um usuário Master em Transact SQL Server? a. Mais uma vez, muito estudo. O Transact-SQL, em particular, é uma linguagem fácil se comparada com outras, mas mesmo assim é preciso conhecê-la muito bem para dominar suas particularidades e saber utilizá-la a seu favor. 6. Qual sua opinião em relação ao uso excessivo de Triggers no banco de dados? a. Bem, o uso de Triggers deve ser ponderado e utilizado com bom senso. Em algumas situações vale a pena utilizar triggers, pois um trigger é um ótimo mecanismo para programar regras de negócio. Contudo, já observei usos irracionais de triggers que apenas tornaram o banco de dados mais complexo e suscetível a erros. 7. Qual o maior erro que uma pessoa pode cometer ao analisar um plano de execução? a. Analisar o plano de execução e tomar uma decisão errada. Isso sem contar que para analisar o plano de execução é preciso conhecer os seus componentes, algo que muitas pessoas ignoram. 8. Quando usar um Clustered Index e quando usar um Non Clustered Index? a. Depende muito da situação. Em geral o uso do índice clusterizado já é implementado automaticamente quando se cria uma chave primária e, a partir daí, todos os outros índices criados são do tipo não clusterizados. Porém isso não deve ser visto como uma regra e sim como uma diretriz. 9. Porque estatísticas são importantes? a. As estatísticas são importantes para avaliar a densidade e seletividade de índices e são utilizadas pelo SQL Server, de forma automática ou não. Há casos onde o SQL Server pode atualizar as estatísticas e gerar um plano de execução melhor. Devido a esta característica vale a pena ver se no plano de execução há alguma mensagem sobre a falta de estatísticas atualizadas. 10. O quanto fragmentação no banco de dados pode afetar performance? Existe algum beneficio em ter fragmentação no banco? a. Mais uma vez esta questão depende muito de cada cenário. Em tabelas grandes que fazem o uso de muitos índices é possível que a fragmentação prejudique o desempenho, porém há casos onde a fragmentação pode fazer sentido, principalmente quando se utiliza opções como o FILLFACTOR e PAD_INDEX. 11. Afinal parallelismo é bom ou ruim? a. Com certeza é algo bom, mais isso vai depender de cada instrução. Em geral o otimizador de consultas já avalia o paralelismo automaticamente e não precisamos nos preocupar muito com isso. 12. Você utiliza alguma ferramenta para auxiliar na resolução de problemas de performance? Quais? a. Sim, utilizo. Com certeza o Profiler é uma das ferramentas mais adequadas para isso. Outra ferramenta muito importante é o próprio Management Studio, pois ele permite a visualização gráfica do plano de execução das instruções. 13. Em um banco de dados em produção você utiliza algum TraceFlag habilitado? a. Raramente. O motivo de não utilizar TraceFlags é que alguns deles requerem a reinicialização do servidor, algo que não pode ser feito em bancos de dados que requerem alta disponibilidade. 14. Cite 3 livros que não podem faltar na coleção de um especialista SQL Server. a. “Introduction to Database Systems” do C. J. Data, “SQL Server Resouce Kit”, da própria Microsoft e o “Inside SQL Server” da Kalen Delaney. 15. Nestes anos de experiência, Qual foi o problema mais difícil de resolver que encontrou? a. Com certeza foram vários. Porém cito problemas de desempenho em bancos de dados com mais de 100 GB de dados como um deles. Além de ser complicado realizar qualquer manutenção em uma base dom este tamanho estas modificações requerem muito esforço e testes. 16. Já passou por algum daqueles problemas que resolveu mas até hoje não sabe o que era? a. Sim, com certeza. Geralmente problemas relacionados a bugs internos do SQL Server não há como saber exatamente o que é. O máximo que dá para fazer é abrir um chamado no suporte da Microsoft e utilizado uma solução temporária (workaround) até um patch ou Service Pack ser liberado. 17. Qual o maior banco de dados que já trabalhou e quantas linhas tinha a maior tabela que já viu? a. Bom, isso é difícil de dizer pois existem bancos de dados que crescem muito rapidamente. No momento posso dizer que já cheguei a trabalhar com bancos de dados que ultrapassam 1 TB de tamanho. Quanto à tabelas, procuro sempre evitar sobrecarregar uma mesma tabela com muitos dados, pois isso evita vários problemas. Mas já encontrei ambientes em que uma tabela apenas ocupava mais de 50 GB de espaço. 18. Como diria o Tobby(charges.com.br) - Bate bola jogo rápido: Um concorrente digno do SQL Server: O Oracle a. Uma feature: O recurso Time Machine do Oracle Um comando SQL(o meu predileto é o SHUTDOWN WITH NOWAIT J) : Com certeza o comando SELECT, preferencialmente com a cláusula WITH CUBE. b. Um livro: Indiscutivelmente o “Introduction to Database Systems” do Date. 19. Você tem algum blog? Site? Msn?... Como os usuários da comunidade podem entrar em contato com você? a. Não tenho blog, mas o meu principal contato é através do iMasters (www.imasters.com.br) onde os usuários da comunidade podem entrar em contato comigo por meio dos comentários nas colunas ou pelo e-mail. 20. Deseja deixar alguma consideração final? a. Vou deixar uma mensagem que ouvi recentemente e que aborda a questão da tecnologia versus o lado humano: b. “Todos somos exploradores, que procuram saber o que está mais à frente do horizonte, o que está no outro lado. E ainda assim, quanto mais experimentei, mais aprendi...que não importa quão longe viajemos, ou quão rápido cheguemos ali, os mais profundos descobrimentos... não estão necessariamente mais à frente... da próxima estrela. Eles estão dentro de nós...tecendo os fios que nos unem, a todos nós, uns aos outros.” August 26 Manipulando o SQL Express com SMO e Management Studio ExpressEstarei apresentando uma WebCast(Treinamento Online) amanhã na quarta-feira, 26 de agosto de 2008. Segue o resumo do que será discutido na WebCast e o link para inscrição do evento.. ---------------------------------------------------------------------------------------------------------------------------------------- Visão Geral do Evento Palestrante: Fabiano Amorim. SQL Server Management Objects (SMO) é uma biblioteca de objetos do .NET Framework que permite gerenciar e criar objetos em um servidor SQL Server. Veja neste WebCast como usar os componentes SMO para criar tarefas de manutenção de banco de dados a partir de uma aplicação WindowsForms. Veremos também o uso do SQL Server Management Studio Express que é ferramenta gratuita de gerenciamento do SQL Server Express. Conto com a presença de todos. Update Os arquivos utilizados na WebCast podem ser baixados usando os links abaixo.
http://cid-52eff7477e74caa6.skydrive.live.com/self.aspx/Publica/ExemploSMO.zip IsNumeric a Saga Continua…Desta vez o IsNumeric ganhou uma visibilidade maior no Blog do super Senior Escalation Enginieer Bob Dorr. http://blogs.msdn.com/psssql/archive/2008/08/25/isnumeric-returns-1-true-and-i-expected-0-false.aspx Interesting… Bug SQL Server 2008 RTMPois é tai um bug(ou não?) interessante do SQL Server 2008 RTM. O Código abaixo roda no SQL 2000 e 2005 mas não roda no SQL 2008. DECLARE @I Int SET @I = -1 SELECT 1 WHERE CONVERT(Numeric(2,0),@i) = 0 Agora vamos dar uma olhada no plano de execução de cada versão. SQL Server 2000 SP4 SQL Server 2005 SP2 SQL Server 2008 RTM O que acontece é que o SQL Server 2008 converte(ummm interessante no SQL 2005 ele usou o CONVERT e no 2008 usou o CONVERT_IMPLICIT e no 2000 ele nem gerou o Compute Scalar) o valor de CONVERT(Numeric(2,0),@i) para um tinyint, sabemos o tinyint vai de 0 até 255 portanto quando ele tenta converter o -1 da erro. Agora a pergunta que fica é, porque o SQL Server considerou o “0” como um tinyint? Talvez por questões de performance já que ele só ocupa 1 byte. Já foi aberto um comentário no Microsoft Connect para falar do assunto... https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=363428&wa=wsignin1.0 August 21 Falando sobre TechEd Brasil 2008 - Site oficial do evento e Steve BalmerDando continuidade nas informações sobre o TechEd 2008. Acreditem ou não mas desta vez quem vem para a abertura do Evento é nada mais nada menos que o Todo Poderoso.. Super Boss da Microsoft, Steve Balmer. Já estão falando por ai que vão proibir a entrada de pessoas com Ovos na mochila :-). Brincadeiras a parte, como nos eventos anteriores esse ano vai ser show de bola. Citação TechEd Brasil 2008 - Site oficial do evento e Steve Balmer August 20 Licenciamento SQL Server 2008
Muito bom este documento onde é explicado os possíveis cenários de licenciamento do SQL Server 2008.
Por exemplo, ao contrário do Oracle o SQL é cobrado por processador e não por core, pode haver uma outra instancia instalada em outra máquina como backup para failover usando Mirroring, Cluster ou Log Shipping... o servidor de BackUp pode ficar no ar por até 30 dias sem ter que pagar por outra licença desde que o número de Processadores seja igual ou inferior ao do servidor de produção.
Segue o link para o documento, Licensing Overview
August 18 Falando sobre TechEd Brasil 2008 - Faça parte desta EXPERIÊNCIA!Galera, o TechEd Brasil 2008 a está chegando, o MVP Helerson postou um banner onde tem alguns detalhes como Datas e local. Citação TechEd Brasil 2008 - Faça parte desta EXPERIÊNCIA! August 16 Nova Geração de Notebooks DELLQuad Core, 16Gb RAM, 1TB RAID, 1Gb de vídeo.
Se alguém quiser fazer uma doação compra esse notebook pra mim por favor.
Ficarei bastante agradecido.
Video:
Site: August 08 10 pontos que devem ser observados quanto a performance de uma consulta Parte - 46. Substituir o uso de CURSOR pelo comando WHILE + tabelas temporárias ou Variáveis do tipo table.
7. Verificar se as variáveis no WHERE são do mesmo DataType que a coluna da tabela.
8. Verificar se existe uso de variáveis do tipo Table para grande volume de dados, pois isso pode causar problema de performance já que variáveis do tipo table não usam proveito de paralelismo e não criam estatísticas com os dados da tabela. 9. Verificar se é possível usar o conceito de Hash Index usando o CheckSum para gerar o número HASH, Caso existam colunas com valores muito grandes as vezes compensa usar o CheckSum para gerar o Hash e depois indexar a coluna hash.
10. Evite usar a clausula IN.
Espero que tenham gostado, eu adorei J, gostei tanto que vou começar a escrever uma série de artigos sobre o Query Optimizer, fiquem de olho... 10 pontos que devem ser observados quanto a performance de uma consulta Parte 3Seguindo a série de boas práticas em relação a performance...
4. É muito comum durante o desenvolvimento de um código SQL necessitarmos zerar o valor das variáveis que serão utilizadas no código. Uma dica em relação a performance é que o comando SELECT é mais rápido do que o SET, porém está regra só se aplica quando podemos substituir um bloco de SET por um SELECT por ex:
5. Pequenas dicas para procedures.. a. Sempre que uma procedure é executada o server envia para o client o número de linhas afetadas pela procedure, normalmente esta informação não é necessária. Desabilitando este comportamento poderemos reduzir o trafego gerado pelo Server e o Client. Portanto sempre que possível inclua o SET NOCOUNT ON no início de suas procedures. Pode ser que isso não gere muita diferença em uma proc que efetua 1 insert mas quando estamos falando de um loop que efetua 1000000 de inserts daí com certeza vai ser um grade ganho de trafego desnecessário que estaria rolando na rede. b. Só use a opção WITH ENCRYPTION e WITH RECOMPILE caso seja realmente necessário. Lembre-se de que existem programas que conseguem descriptogravar um proc que está criptografada no banco. c. Não inicie o nome de suas procedure com sp... este prefixo é reservado para procedures do sistema, sempre que você executa uma procedure que inicia com sp... o SQL irá procurar a proc no banco Master e se ela não estiver lá então ele irá resolver o nome da proc no banco atual. Evite este passo adicional simplesmente renomeando as procedures para por exemplo usp ou st. d. Caso tenha que rodar algum código TSQL no meio da proc evite utilizar o EXEC ao invés disso use a sp_ExecuteSQL pois ao contrário do EXEC a sp_ExecuteSQL irá compilar o SQL para gerar um plano de execução para sua consulta, o quer dizer que caso o plano já tenha sido gerado na próxima execução do código ele irá utilizar o plano que ficou em cachê, evitando a recompilação do código a cada execução. August 06 FIX e Patchs de Correção IIAinda falando sobre atualização e correções do SQL Server, segue um site MUITO bom que contem todos os updates do SQL e qual o número de cada Build.
Esse vale ir pro favoritos.
August 05 FIX e Patchs de CorreçãoPessoal vamos ficar atentos para os Fix de correção de erros do SQL Server, não basta atualizar até o último Service Pack e esperar pelo próximo SP pois tem existem várias correções que são lançadas e que ainda não estão em um Service Pack.
Nos últimos 2 meses tivemos problema 2 problemas em nossos clientes que estavam com uma versão com um problema que já havia sido corrigido.
1º Problema;
O primeiro foi em um cliente que utilizava SQL Server 2000 com Service Pack 3, e tivemos um erro que ao rodar uma consulta com um where IS NULL mesmo assim retornava um valor que não era NULL. Por ex:
select * from tabela where Cod IS NULL
O comando acima retornava um Cod que não era null contrariando o filtro do WHERE. Este problema foi corrigido no SP 4 do SQL 2000, como podemos ver no KB abaixo.
FIX: A parallel query may return unexpected results http://support.microsoft.com/kb/814509/en-us
Para resolver temporariamente até o cliente atualizar seu servidor utilizamos a clausula OPTION (MAXDOP 1) nos selects.
2º Problema;
Outro erro que pegamos foi no SQL Server 2005 SP2 onde ao rodar uma procedure com um texto muito grande e usando a opção WITH ENCRYPTION o SQL gerava um erro. Este problema foi corrigido com um FIX que já foi lançado e é bem provável que estará entre os FIX de correção que serão lançados com o SP3 do SQL Server 2005, podemos ver mais detalhes do problema e baixar o FIX no KB abaixo.
FIX: Error message when you run a long stored procedure that is encrypted in SQL Server 2005: "A stack overflow occurred in the server while compiling the query" http://support.microsoft.com/kb/934246/en-us
Scripts and Tools for Performance Tuning and Troubleshooting SQL Server 2005E tem gente que ainda pergunta porque eu gosto da Microsoft!
Acesse e pegue uma coleção muito boa de scripts para o SQL Server 2005.
Aproveitando o embalo acesse o Toolbox do CAT para mais arquivos e aplicativos úteis para SQL.
August 01 Community Zone 2008Acabei de receber um convite para participar do Community Zone 2008 que será no Hotel Vila Santo Agostinho em Bragança Paulista.
Show de Bola! Baseado no que vi dos eventos anteriores a este deve ser muito bom. Fora que irei estar no meio dos maiores influenciadores e colaboradores da Microsoft...
Para enviar o convite eles avaliaram a minha contribuição nas comunidades técnicas como:
• Fóruns de discussão (quantidade de respostas com alta qualidade e/ou moderação); • Artigos técnicos publicados na comunidades MSDN e TechNet; • WebCasts entregues através do MSDN e TechNet; • Eventos Presenciais; • Contribuições com grupo de usuários; • Participação em Projetos dos Centros de Inovação e/ou Adoption Labs da Microsoft
Já confirmei minha presença, quando eu voltar conto como foi J
|
|
|