Arquivo

Archive for the ‘Storage’ Category

Dicas para um DBA Iniciante – Estimativa de crescimento do banco de dados

E ai pessoal!!!!!

Hoje quero compartilhar com vocês um script que utilizo para estimar qual a taxa de crescimento de um banco de dados através dos tamanhos dos seus backups.

 

DECLARE @endDate datetime, @months smallint;
SET @endDate = GetDate();  -- Include in the statistic all backups from today
SET @months = 6;           -- back to the last 6 months.

;WITH HIST AS
   (SELECT BS.database_name AS DatabaseName
          ,YEAR(BS.backup_start_date) * 100
           + MONTH(BS.backup_start_date) AS YearMonth
          ,CONVERT(numeric(10, 1), MIN(BF.file_size / 1048576.0)) AS MinSizeMB
          ,CONVERT(numeric(10, 1), MAX(BF.file_size / 1048576.0)) AS MaxSizeMB
          ,CONVERT(numeric(10, 1), AVG(BF.file_size / 1048576.0)) AS AvgSizeMB
    FROM msdb.dbo.backupset as BS
         INNER JOIN
         msdb.dbo.backupfile AS BF
             ON BS.backup_set_id = BF.backup_set_id
    WHERE NOT BS.database_name IN
              ('master', 'msdb', 'model', 'tempdb')
          AND BF.file_type = 'D'
          AND BS.backup_start_date BETWEEN DATEADD(mm, - @months, @endDate) AND @endDate
    GROUP BY BS.database_name
            ,YEAR(BS.backup_start_date)
            ,MONTH(BS.backup_start_date))
SELECT MAIN.DatabaseName
      ,MAIN.YearMonth
      ,MAIN.MinSizeMB
      ,MAIN.MaxSizeMB
      ,MAIN.AvgSizeMB
      ,MAIN.AvgSizeMB 
       - (SELECT TOP 1 SUB.AvgSizeMB
          FROM HIST AS SUB
          WHERE SUB.DatabaseName = MAIN.DatabaseName
                AND SUB.YearMonth < MAIN.YearMonth
          ORDER BY SUB.YearMonth DESC) AS GrowthMB
FROM HIST AS MAIN
ORDER BY MAIN.DatabaseName
        ,MAIN.YearMonth

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço a todos.

Anúncios

SQLManiacs no Telegram

Pessoal,

Quero convidá-los a participar do grupo do SQLManiacs no TELEGRAM para que possamos discutir ainda mais sobre o SQL Server e o Azure.

Caso tenha interesse em participar, basta acessar o link abaixo:

SQLManiacas – Telegram

Não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

SQLSaturday #580 – Material da apresentação

Galera,

No último dia 08/04 ocorreu mais um excelente SQL Saturday na cidade de Joinville, no qual tive novamente o prazer de ser um dos palestrantes.

Caso você tenha interesse no material que utilizei durante a minha sessão sobre Stretch Database, basta realizar o download através do link abaixo:

SQL Saturday – Apresentações

Não deixe também de participar da 1ª edição do SQL SERVER: THE AMAZING DATA, evento no qual teremos os melhores e mais reconhecidos profissionais da área, compartilhando experiências e conhecimentos durante mais de 16 HORAS !!

Espero TODOS vocês no evento e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

 

Reagendamento do webcast – Stretch Database – Armazenamento de dados históricos no SQL Server 2016

Fala pessoal, tudo bem com vocês?

Devido a alguns problemas técnicos ocorridos por causa das últimas chuvas aqui em São Paulo, reagendei o nosso último webcast para o dia 29/12, a partir das 21:00.

Neste webcast apresentarei para vocês uma nova funcionalidade do SQL Server 2016 chamada Stretch Database, com a qual é possível otimizar o armazenamento e manipulação de dados históricos integrando uma instância de SQL Server com o Azure SQL Database.

Caso tenham interesse em participar basta acessar o link abaixo no horário do evento:

Stretch Database – Armazenamento de dados históricos no SQL Server 2016

Espero todos vocês no evento e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

Interopmix 2016 – SQL Server: Planejando um ambiente SQL Server de alta performance e missão crítica

Fala galera, tudo bem com vocês?

No último dia 19/11 ocorreu em São Paulo o Interopmix e tive o grande prazer de participar como um dos palestrantes.

Em minha sessão apresentei como selecionar e configurar da melhor maneira possível todos os componentes de infraestrutura necessários para a implementação de um ambiente de banco de dados SQL Server de alta performance e missão crítica.

Caso tenham interesse em fazer o download do material utilizado, basta acessar o link abaixo:

Apresentação – Interopmix

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

TDC – Planejando um ambiente SQL Server de alta performance e missão crítica

Galera,

No dia 05/07, tive o imenso prazer de participar novamente como palestrante do evento The Developers Conference na trilha de banco de dados que foi coordenada pelos MVPs Marcus Vinícius Bittencourt e Diego Nogare.

Em minha sessão procurei passar um pouco da minha experiência sobre como selecionar e configurar da melhor maneira possível todos os componentes de infraestrutura necessários para a implementação de um ambiente de banco de dados SQL Server de alta performance e missão crítica.

Abordei de maneira detalhada conceitos sobre a arquitetura de processadores, unidades de armazenamento, memória RAM e também como testar todos estes componentes em conjunto para garantir que o seu tipo de workload seja atendido no menor tempo possível.

Caso tenha interesse no conteúdo da minha sessão, basta realizar o download do material através do link abaixo:

TDC – Planejando um ambiente SQL Server de alta performance e missão crítica

Espero que gostem e não deixem de inscrever-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

Dicas para um DBA Iniciante – Encontrando consultas utilizando muitas operações de I/O

Galera,

Recentemente passei por um cenário no qual um dos servidores de um cliente apresentava momentos de extrema lentidão ao executar alguns relatórios operacionais e durante o processo de troubleshooting foi possível identificar o wait type PAGEIOLATCH ocorrendo muitas vezes.

Com esta informação mantive o foco em encontrar as consultas que utilizavam uma grande quantidade de operações de I/O e assim iniciar uma análise mais detalhada dos planos de execução entendendo a razão desta alta quantidade de operações de I/O.

Para isto utilizei a query abaixo, que quero compartilhar com vocês.

WITH QueryIO AS 
(
    SELECT TOP 1000
        [Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count,
        [Total IO] = (total_logical_reads + total_logical_writes),
        [Execution count] = qs.execution_count,
        [Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
                 (CASE WHEN qs.statement_end_offset = -1
                    THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
                  ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
                  ),
        [Parent Query] = qt.text,
        DatabaseName = DB_NAME(qt.dbid)
    FROM 
        sys.dm_exec_query_stats qs
    CROSS APPLY 
        sys.dm_exec_sql_text(qs.sql_handle) AS qt
    WHERE 
        (total_logical_reads + total_logical_writes) / qs.execution_count > 1000
    ORDER BY 
        [Total IO] DESC
)
SELECT 
    * 
FROM 
    QueryIO 
ORDER by 
    [Execution count] desc

Executando a consulta no servidor de banco de dados SQL Server, obtivemos um resultado semelhante ao ilustrado na Figura 1.

IO_Results
Figura 1 – Consultas utilizando grande quantidade de operações de I/O

Após a análise das 5 primeiras consultas, retornadas já foi possível identificar a causa da lentidão e solucionar em definitivo o problema.

Espero que gostem e não deixem de inscrever-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.