sexta-feira, 24 de junho de 2016

FUN! Deadlock art generator

Contexto: Estou ministrando um treinamento in-company e preparando uma série de novas demonstrações para este cliente. Após escrever uma procedure que era para ser problemática, esbarrei em deadlocks mais interessantes do que eu havia planejado….

Gostei da brincadeira e resolvei compartilhar com vocês um deadlock art generator!

Algumas imagens da saída estão abaixo. Também coloquei no OneDrive um trace com alguns deadlocks que eu coletei.





A primeira ver que ouvi falar sobre deadlock art foi em um post do Catae (https://blogs.msdn.microsoft.com/fcatae/2010/03/18/deadlock-art/) que sempre cito no módulo de locking nos meus treinamentos.

Para reproduzir em seu ambiente, você vai fazer o seguinte.

    1. Crie a procedure proc_Divertida no AdventureWorks2014
    2. Utilizando o SQLQueryStress, mande 20/30 threads com 3/4 execuções “EXEC proc_Divertida;”
        a. O número de threads/repetições você muda de acordo com seu interesse na arte. kkkk
    3. Monitore o deadlock graph no profiler

HAVE FUN!

Abraços,


USE AdventureWorks2014
GO
IF OBJECT_ID('dbo.proc_Divertida') IS NOT NULL
     DROP PROCEDURE dbo.proc_Divertida
go
CREATE PROCEDURE dbo.proc_Divertida
AS 

     DECLARE @OrderID INT = (CAST((RAND() * 100000) AS INT) % 30000) + 43659;
     PRINT @OrderID

     BEGIN TRANSACTION

           UPDATE Sales.SalesOrderDetail
                SET UnitPrice = UnitPrice
           WHERE SalesOrderID = @OrderID

           ; WITH C AS (
                SELECT (Quantity * ActualCost) AS LineTotal, PRODUCTID, TransactionDate
                FROM Production.TransactionHistory
                UNION
                SELECT (Quantity * ActualCost), PRODUCTID, TransactionDate
                FROM Production.TransactionHistoryArchive
                UNION
                SELECT (UnitPrice * OrderQty), SOD.ProductID, SOH.OrderDate 
                FROM Sales.SalesOrderDetail AS SOD
                INNER JOIN Sales.SalesOrderHeader AS SOH
                ON SOH.SalesOrderID = SOD.SalesOrderID
           )
           SELECT 
                C.ProductID,
                YEAR(TransactionDate),
                SUM(LineTotal)  
           FROM C
           GROUP BY GROUPING SETS (ProductID, YEAR(TransactionDate), (ProductID, YEAR(TransactionDate)), ())

     COMMIT TRANSACTION
GO

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

quarta-feira, 22 de junho de 2016

[SQLServerDF] Encontro XXXIII - SQL Server CPU Foundations

Na próxima semana temos mais uma apresentação do SQLServerDF, começando 18:30h.

NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.

Data e horário: 29/06/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrante: Rodrigo Ribeiro Gomes

Título: SQL Server CPU Foundations

Descrição: Você sabe dizer o percentual de consumo de CPU que uma query ou procedure está consumindo? O que significa usar 100% de CPU? Esta apresentação irá apresentar conceitos básicos sobre o uso de CPU no Windows e como isso impacta na análise de queries de uma instância. Alguns trechos da apresentação podem ser conferidas no vídeo disponível em https://www.youtube.com/watch?v=mXF7NcJqX8M.

Mini-cv do palestrante: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com.

Abraços

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

terça-feira, 21 de junho de 2016

Treinamentos com Luti em Julho/2016

Pessoal, temos anúncio de treinamentos da Nimbus para o mês de Julho, comigo como instrutor:

    • SQL23 Brasília (em definição)
    • SQL22 São Paulo (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/)
    • SQL23 São Paulo (http://www.srnimbus.com.br/calendario/sql23_spjul2016/)

Por conta de novos projetos que eu estou envolvido, eu NÃO tenho previsão de ministrar mais treinamentos em 2016 ou 2017, sendo que este intervalo pode se estender.

Então se você já tem vontade de fazer um treinamento comigo, porém vem adiando seus planos, meu conselho é que não deixe passar essa oportunidade…

Importante: os preços promocionais de R$ 1.500,00 serão mantidos!

E antes que perguntem, eu vou incluir algumas coisinhas do SQL Server 2016.

Abraços

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

segunda-feira, 30 de maio de 2016

SQL Server além do conceito volume 2

Essa é uma notícia requentada, já que o anúncio foi feito enquanto eu estava viajando, porém não poderia deixar de registrar aqui mais um feito entre amigos #sqlgeeks.

No ano passado 15 amigos se juntaram para montar um livro, que seria uma coletânea de capítulos sobre assuntos diversos, e claro, publicá-lo gratuitamente para toda a comunidade técnica. O resultado deste trabalho foi o lançamento do livro SQL Server Além do Conceito – Volume 2.

Você pode baixar gratuitamente o PDF do livro: https://onedrive.live.com/redir?resid=E145F7753042D628%216153

Caso prefira comprar na Amazon, o link é: https://www.amazon.com/SQL-Server-Al%C3%A9m-Conceito-Portuguese-ebook/dp/B01FVH1F3C

Obs: A Amazon não permite colocar um livro gratuitamente para sempre. Uma opção seria deixá-lo gratuito por 5 dias a cada 90 dias, porém, isso nos proibiria de publicá-lo em outro local. Sendo assim, decidimos publicar na Amazon com o menor valor possível ($1,99) e o valor arrecadado ( se houver ) será usado para bancar parte do jantar dos palestrantes no SQL SATURDAY SP.

Abraços

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

quinta-feira, 26 de maio de 2016

[SQLServerDF] Encontro XXXII - Corrupção de dados e Perda Acidental

Na próxima semana temos mais uma apresentação do SQLServerDF, começando 18:30h.

NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.

Data e horário: 30/05/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrantes: Gustavo Maia Aguiar e Rodrigo Ribeiro Gomes

Título: Corrupção de dados e Perda Acidental - Prevenção, Tratamento, Boas Práticas

Descrição: A eficaz administração de banco de dados zela para que todos os dados estejam disponíveis e protegidos para os usuários, aplicações e demais consumidores. Por mais cuidados que um ambiente possa ter, não raras às vezes o banco de dados pode sofrer incidentes que comprometam o seu conteúdo (e muitas vezes sem um ponto de restauração disponível).

Se alguma vez você já teve de lidar com corrupção de dados ou perda acidental em ambientes críticos ou tem curiosidade sobre as melhores formas de fazê-lo bem como prevenir que problemas dessa natureza ocorram, essa sessão poderá ambientá-los em técnicas que lidem com esse tipo de situação. São tratadas situações práticas de problemas e resolução

Mini-cv do Gustavo: Profissional entusiasta do mundo de banco de dados e armazenamento há mais de treze anos, trabalhou em várias empresas, escreveu vários artigos e ministrou vários treinamentos e consultorias e hoje atua em uma das maiores instituições financeiras do país como líder de banco de dados. Acostumado com ambientes de missão crítica e palestrante recorrente em eventos ligados a banco de dados e a tecnologias Microsoft. Nas horas vagas, usa o hobby de DJ e diverte-se com seus trabalhos publicados em https://www.mixcloud.com/gmasets.

Mini-cv do Rodrigo: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com


Abraços

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