Dica do Mês – Você sabe o que é Normalização de Banco de Dados?

Olá galera, bom dia, bom dia comunidade!!! Estou de volta com mais um post da sessão Dica do Mês, nossa como o tempo esta passando, este é o sexto post desta nova sessão criada este ano no meu blog e que lentamente começa a apresentar alguns resultados. Como você já deve estar acostumado quando visita o … Continuar lendo Dica do Mês – Você sabe o que é Normalização de Banco de Dados?

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

Queries do Dia a Dia – Monitorando Contadores de forma simples via DMV

Olá Pessoal, Hoje vou compartilhar com vocês mais um script que utilizo nos clientes que realizo um monitoramento diário do SQL Server. Realizando uma busca na internet você encontra algumas formas de monitorar contadores no SQL Server. Você pode enviar dados do perfmon para um arquivo e depois importar para o SQL Server, pode fazer […]

[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

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

Columnstore Indexes – part 85 (“Important Batch Mode Changes in SQL Server 2016”)

Continuation from the previous 84 parts, the whole series can be found at http://www.nikoport.com/columnstore/ I wanted to write a blog post on some of the changes that were implemented in SQL Server 2016, that might affect workloads migrated from SQL…

CONCAT – Função para concatenar valores

Uma das funções que está no SQL Server desde versão 2012, é a função ‘CONCAT’, essa função é utilizada para concatenar dois ou mais valores. Talvez fiquem na dúvida, qual motivo irei utilizar a função ‘CONCAT’ no lugar de utilizar o bom e velho ‘+’? Simplesmente pelo motivo de não precisar se preocupar com os […]

Short Scripts – Junho 2016

Salve, salve minha gente, boa tarde!!! Mais uma segunda – feira começando e mais uma semana se iniciando, já passamos da metade do mês de Junho tão aguardado devido ao lançamento do novo Microsoft SQL Server 2016. Caso você tenha perdido alguma informação sobre este lançamento, aproveito para compartilhar aqui um dos diversos posts publicados no meu blog … Continuar lendo Short Scripts – Junho 2016

Columnstore Indexes – part 84 (“Practical Dictionary Cases”)

Continuation from the previous 83 parts, the whole series can be found at http://www.nikoport.com/columnstore/ In this blog post I wanted to focus on 2 practical aspects of Columnstore Dictionaries compression – the ones I have seen in the past months…

Como foi o #SQLSAT512 no Rio de Janeiro

Olá Pessoal, No último fim de semana tive o prazer de palestrar no SQL Saturday do Rio de Janeiro. Levei para Rio minha palestra sobre o tema: “Passo a Passo para realizar uma consultoria de Tuning em um Cliente” Nesse link abaixo pode ser feito o Download da minha palestra e de outros palestrantes. Basta […]
Go to Top