quinta-feira, 30 de junho de 2011

Treinamento SQL Server 2008 Internals em Natal

Bom dia pessoal.
O anúncio do treinamento em Natal está na página da Nimbus (www.srnimbus.com.br)  já faz alguns dias e estou próximo da confirmação da turma, mas tenho que saber ao certo quantas pessoas vão participar.

A essa altura do campeonato eu acho que o treinamento já anda dispensando apresentação, até hoje 100% dos alunos que fizeram o treinamento e responderam o questionário de avaliação disseram que fariam novamente um treinamento com a Nimbus e avaliaram o instrutor como excelente (sim, modéstia passou longe... :-)).

Se você quer participar, preencha a proposta de treinamento e mande para contato@srnimbus.com.br! A proposta com TODOS os detalhes está aqui: http://intranet.srnimbus.com.br/Lists/noticias/Attachments/19/11006%20-%20SQL%20Server%202008%20Internals%20-%20Julho_RN.pdf

E não, não penso ainda em fazer o Internals online, apesar do sucesso do treinamento de indexação.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quinta-feira, 2 de junho de 2011

Primeiro treinamento online da Sr. Nimbus

Ladies and gentlemen!

************************************************************************************
!!UPDATE!!

Recebemos questionamentos sobre o formato do curso e algumas pessoas querem testar o Live Meeting, então hoje (08/06/2011), entre 21:00 e 21:30 eu estarei online no LM para tirar dúvidas com relação ao formato do curso, ementa, material, certificados, além claro, de já testar a conectividade do LM.

Link para sessão aberta: https://www.livemeeting.com/cc/mvp/join?id=9WM6CF&role=attend&pw=AlunoNimbus20110608

Perto do horário eu publicarei aqui e no twitter o endereço para vocês acessarem a sessão do Live Meeting.

IMPORTANTE: hoje de noite eu estarei com uma conexão de modem 3G que NÃO é a conexão do treinamento, mas atende o propósito pontual. Para o treinamento temos dedicado um link de 10MB da GVT, e por todos os testes que conduzimos podemos dizer que a conectividade ficou muito boa.
************************************************************************************

Colocamos no nosso site a inscrição para o primeiro treinamento online oferecido pela Sr. Nimbus. O treinamento será o novo SQL10 - Indexação no SQL Server 2008 e eu serei o instrutor dessa turma.

Nesse treinamento vamos focar em um dos assuntos mais fascinantes e importantes do SQL Server: índices! Ficaremos 16 horas discutindo sua estrutura, tipos, melhores práticas de utilização e otimização.

A ideia é nos aproximarmos ao máximo uma aula presencial, com um moderador repassando as perguntas para o instrutor, que responderá perguntas ao vivo, apresentaremos PPTs, demos e, em paralelo, o aluno terá acesso a todos os scripts que poderá ir executando confortávelmente em sua casa. Antes de cada aula também ficaremos por 30 minutos na sala de aula, tirando dúvidas dos alunos por chat ou respondendo em voz alta para todos.

Temos muita expectativa no excelente aproveitamento dos alunos e na satisfação de todos, pois é um formato mais democrático, que possibilita a participação de todos, independente de onde você esteja.

Gostou?! Veja todos os detalhes aqui: http://intranet.srnimbus.com.br/treinamento/paginas/inscricoes/SQL10-201101.aspx

Estou contando os dias para o treinamento.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

sexta-feira, 27 de maio de 2011

Balanced Data Distributor para o SSIS

Estava navegando pelos meus RSSs e encontrei algo fantástico para o SSIS. Um blog de performance do SQL Server, parado a mais de um ano, publicou um post sobre o Balanced Data Distributor que você pode ler aqui: http://blogs.msdn.com/b/sqlperf/archive/2011/05/25/the-balanced-data-distributor-for-ssis.aspx.

Olha que bacana, agora podemos colocar no data flow um componente que quebra o fluxo de dados em diferentes fluxos de saída (potencialmente com uma distribuição homogênea), permitindo utilizar um maior paralelismo no seu pacote e melhorar o desempenho na carga dos dados.

O post do Len Wyatt já dá uma explicação legal, discutindo possíveis casos de gargalos, então não vou ficar muito na teoria. Para alimentar o espírito geek eu baixei o BDD e fiz um pequeno teste no SSIS.

Cenário: criei um raw file com 30.000 registros e disparei da minha máquina (um dual core) o pacote. Este vai pegar esses registros e fazer 30.000 lookups contra um servidor SQL Server (nada parrudo, uma máquina bbeeemmm simples), inserindo os campos originais mais um campo retornado pelo lookup em uma tabela de destino (deixei como uma heap).
Minha intenção é conseguir paralelizar os lookups e ver o ganho de desempenho, já que o lookup é uma operação cara (ainda mais com a forma padrão que o SSIS trabalha).

Abaixo temos as três figuras, mostrando o BDD trabalhando com um, dois e quatro fluxos de dados.

BDD_1fluxo
Figura 01 – Somente um fluxo de dados

BDD_2fluxos
Figura 02 – Dois fluxos de dados

BDD_4fluxos
Figura 03 – Quatro fluxos de dados

Executei cada teste duas vezes e registrei os tempos de execução de cada pacote…

1 fluxo de dados
Tempo 1: Finished, 1:12:38 PM, Elapsed time: 00:01:00.123
Tempo 2: Finished, 1:15:12 PM, Elapsed time: 00:00:53.493


2 fluxo sde dados
Tempo 1: Finished, 1:17:07 PM, Elapsed time: 00:00:38.376
Tempo 2: Finished, 1:18:32 PM, Elapsed time: 00:00:33.650


4 fluxos de dados
Tempo 1: Finished, 1:21:04 PM, Elapsed time: 00:00:24.804
Tempo 2: Finished, 1:22:00 PM, Elapsed time: 00:00:23.962


Com o paralelismo do BDD e quatro fluxos o tempo caiu de quase um minuto para 24 segundos! E isso que as máquinas não são boas ou massivamente paralelas, imagine isso rodando em um servidor feroz.

Outro detalhe interessante do BDD que já dá para perceber pelos testes é a forma que ele trabalha. Ele não vai jogar uma linha para um fluxo, depois outra linha para outro fluxo e assim sucessivamente, o BDD pega o conteúdo do buffer e vai jogando para cada fluxo. Na figura 3 podemos notar que depois de já ter distribuido 28.671 registros, somente sobraram 1.329 para o quarto ramo. Uma implementação bem eficiente que nos dá indício que ainda podemos tirar vantagem de alguns ajustes do tamanho do buffer no pipeline.

Antes desse componente poderíamos tentar algo bem menos efetivo, fazendo um gatinho (mmiiaauuu) com o conditional split. Mas aí você deveria definir como são distribuídos os fluxos e a lógica teria que ser muito eficiente para não haver um desbalanceamento nos ramos… Algo como um campo que tivesse uma distribuição homogênea para os registros e estes intercalados, para garantir a distribuição igualitária durante o processamento dos buffers, senão você teria um ramo sendo usado primeiro, depois outro, etc. (sem um paralelismo efetivo). Isto é, antes do BDD a ideia é factível, mas improvável de ser implementado de forma eficiente.

E não, esse não é um componente que está no Denali, pelo menos eu ainda não vi nada a respeito sobre a inclusão dele e os CTPs não possuem esse componente… Mas bem que poderia ser incluído!

Eu me diverti, e você?

Atualização
{

A dúvida do Rodrigo é muito pertinente! A diferença do BDD para o multicast NÃO está no paralelismo, pois o multicast também pode usufruir de múltiplas thread, mas normalmente com os ramos fazendo operações diferentes entre si ou populando destinos diferentes.

Supondo que no multicast você têm 12 regsitros no pipeline, os mesmo 12 registros vão fluir em cada ramo. Então supondo 4 ramos, se você inserisse tudo na mesma tabela iria acabar com 48 registros, cada um aparecendo 4 vezes.

Com o BDD os 12 registros que entram no pipeline serão distribuídos entre os ramos, deixando 3 registros para cada ramo (exemplo hipotético, já que no fundo a divisão é feita pela quantidade de registros que cabe em um buffer do pipeline). Se inseridos em uma única tabela, como foi o meu exemplo, você teria os 12 registros sem duplicatas.

Espero ter sido claro, qualquer coisa grita!

}

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/

terça-feira, 24 de maio de 2011

Intellisense do SQL Server 2008 R2 e o SP1 do Visual Studio 2010

Bom dia pessoal.
Nesse fim de semana formatei a minha máquina e aproveitei para deixar o SQL Server 2008 R2 como instância default, atualizar o VS 2010 com o SP1 e finalmente instalar o Win7 SP1.

Quando fui trabalhar na segunda-feira descobri que o intellisense do SQL Server Management Studio não estava funcionando. Fiz o troubleshooting básico de configuração do SSMS e nada! Pesquisando um pouquinho acabei por descobrir o culpado disso tudo: o Service Pack 1 do Visual Studio 2010!

A solução dada pela Microsoft é instalar o Cumulative Update 7 do SQL Server 2008 R2 para solucionar o problema. Eu instalei e tudo voltou a funcionar normalmente.

Algumas referências para o acontecido:
FIX: The IntelliSense feature in SSMS 2008 R2 may stop working after you install Visual Studio 2010 SP1
Cumulative Update package 7 for SQL Server 2008 R2

E um KB legal de acompanhar: The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 was released 

Eu vi que algumas pessoas tiveram um problema com projetos do DBPro depois de instalado do CU#7, mas não aconteceu comigo.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/

terça-feira, 10 de maio de 2011

Treinamentos Sr. Nimbus e curso online

Bom dia pessoal.
Recentemente temos recebido vários questionamentos sobre calendário e pedidos para que nossos treinamentos sejam executados em outros estados. Vamos a um rápido posicionamento:
  • Não fechamos turma para os treinamentos de querying e programming por conta dos horários. Tínhamos demanda, mas as datas/horas não coincidiam para os alunos.
  • Por conta dos nossos recursos, mais especificamente eu (sim, sou o culpado), tivemos que alterar o calendário por conta de alguns projetos em que estamos trabalhando. O que nos forçou a postergar algumas turmas para não fazer uma entrega corrida.
    • Estamos trabalhando em um novo calendário para os próximos meses, em breve publicarei no site da empresa e farei o anúncio aqui também.
  • O treinamento de database mirroring com o Gustavo Aguiar vai ser ministrado provavelmente em Junho. Estamos negociando uma parceria e trabalhando forte no conteúdo e, devo confessar, está espetacular.
Com relação a oferecer treinamentos em outros locais, a dificuldade de deslocamento ainda é grande e não conseguimos cobrir um espaço muito grande, então estamos estruturando uma oferta para um treinamento online de SQL Server, focado em indexação.
Para nos ajudar, montei uma pequena enquete e gostaria MMMUUIITTTOOO que você nos ajudasse. Na enquete estão os detalhes para o primeiro treinamento.


Responda a pesquisa!


[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/