IOPS de Disco

Escrevi o último post sobre o conceito de latência de disco, que é uma das chaves para entender performance no SQL. Ao invés de falar de latência, podemos calcular o número de operações por segundo. Por exemplo: se a latência de disco é de 1ms, então podemos efetuar 1000 operações/segundo. Se a latência subir para…

0

Latência de Disco

Lembrei de uma pergunta que sempre fazia durante as entrevistas de banco de dados: Se a leitura de um bloco de 8kb demora 5ms, então quanto tempo demora para ler um bloco de 64kb? A resposta é simples: 5ms. Muitas pessoas vão estranhar ouvir que o acesso ao disco não depende do tamanho do bloco….

0

Virtualizando Hardware e Storage

Esse post vou comentar um pouco sobre a virtualização de Hardware usando a tecnologia Hyper-V. O fato é que sempre gostei de máquinas físicas ligadas a storages dedicados. Afinal, sistemas de missão crítica necessitam o máximo de desempenho. Entretanto, confesso que tenho mudado de opinião. Desde o começo do ano tenho usado cada vez mais…

2

Discos: Tamanho é documento?

Ouvi recentemente o comentário: “comprei um computador novo com 1TB de disco, agora sim vai ficar rápido”. A questão é como podemos dizer se o disco é rápido ou lento? Resolvi escrever esse post para explorar um pouco mais esse assunto. Por exemplo: qual desses discos abaixo traria melhor desempenho ao banco de dados? Na…

3

JBOD: Just a Bunch of Disks

Estava em um reunião para definir a estratégia de storage do cliente, quando alguém comentou (não lembro das palavras exatas, mas era similar a): “Vocês querem usar um JBOD para guardar os dados?” Que raios seria um JBOD? Essa é uma sigla curiosa… mais curioso é o seu significado: Just a Bunch of Disks. Essa…

4

Como criar uma demo usando fn_dblog

Esses dias estive olhando vários artigos sobre SQL Server em busca de inspiração. Descobri que a função fn_dblog é uma das mais usadas para montar uma demonstração de “internals” do SQL Server. Ótimo, pois agora é minha vez de mostrar algo sobre ela. Exemplo: Podemos usar a função fn_dblog para ilustrar o que acontece com…

1

Data Recovery: MUST READ

Apesar de fazer um tempo que não tenho escrito nada no Blog, tenho pensado muito em publicar algo em conjunto com a equipe do TechNet. E uma das idéias é preparar um material do nível da certificação Microsoft Certified Master (MCM). Começo selecionando os principais artigos relacionados a Data Recovery. Disk Subsystem Performance Analysis for…

6

Curiosidades sobre RAID1 e RAID6

[17/Nov/2010] Hoje recebi um comentário do Roberto Cavalcanti, que trabalha como Sr. Support Engineer na Microsoft. O post ficou um pouco confuso quanto a proposta de dizer que RAID1 = RAID10, e concordo plenamente! Pretendia corrigir esse artigo, mas o ideal vai ser escrever um novo. Obrigado Roberto! RAID1 como sinônimo de RAID10, RAID1+0 e…

1

Background Task: Checkpoint Process

Checkpoint process é uma tarefa realizada periodicamente em todos os bancos de dados para manter as informações sincronizadas entre os arquivos de Dados e Log. É importante lembrar que as escritas de dados são realizadas de forma assíncrona, ou seja, os comandos de UPDATE, INSERT e DELETE alteram os dados em memória (apesar de manter…

6

NULL or NOT NULL: Qual a diferença?

A idéia começou a partir de um comentário gerado no post Data Buffer, quando o DBA SQL sugeriu a utilização do DBCC PAGE para visualizar os registros dentro de um buffer – enfim, ele queria ver os bits & bytes do SQL Server. Isso me lembrou uma pergunta bastante interessante sobre o comportamento do banco…

6

Log Cache

O Log Manager é responsável por todas as rotinas relacionadas com a escrita/leitura das informações no log. As informações são gravadas fisicamente em um arquivo de log. Um servidor SQL apresenta um Log Manager por banco de dados e pode ser monitorado através dos contadores do Performance Monitor: SQLServer:Databases Log Bytes Flushed/sec – Quantidade de…

1

Data Buffer

O que é um BUFFER? Dentro do SQL Server, Buffer é uma estrutura de tamanho fixo de 8KB utilizada para servir primariamente como cache de dados. Tanto a memória como os arquivos em disco são segmentados em páginas de 8Kb. Ao contrário dos demais Bancos de dados (Oracle, DB2, etc), esse tamanho é fixo e…

5

Cache de Dados

<Continuando o artigo Monitorando a memoria do SQL Server> Antes de entender como o SQL Server gerencia seus recursos, vamos discutir uma questão relacionada ao papel da memória no servidor: Qual a principal função da memória em um servidor de banco de dados? Resp: A memória é usada para fazer cache de dados. Essa área…

1

Background Task: Log Writer

Log writer é um processo dedicado que auxilia na escrita de log para todos os bancos de dados. Apesar de ser único no servidor, ele realiza escrita em todos os arquivos de Transaction Log. Dentro do SQL Server, o log writer corresponde a uma task de sistema que roda continuamente desde o startup da instância….

0

Log Sequence Number (LSN)

Com o objetivo de manter as propriedades ACID (Atomicity, Consistency, Isolation e Durability), as transações efetuadas em banco de dados utilizam registros de log com informações de undo/redo de suas operações. Cada operação é identificada unicamente através do Log Sequence Number (LSN). Esse identificador incremental permite identificar a sequencia de gravação de log. Esse número…

0

Cache de Disco III

Já iniciei a conversa sobre o papel do cache de disco: Parte 1 – O cache deve ser configurado para escrita (write-cache enable) Parte 2 – Adequação do hardware para garantir a integridade dos dados Ao reler esses posts, tive a impressão de que o cache de leitura é desnecessário. NÃO! A resposta politicamente correta é que…

0

Background Task: Lazy Writer

Lazy writer é o processo responsável por escrever os dados em disco de forma assíncrona, além de desempenhar um papel importante no gerenciamento de memória. Escrita assíncrona de dados? Sim! Os comandos UPDATE/INSERT/DELETE são gravados no Transaction Log de forma síncrona, mas realizam as modificações dos dados em memória. Nesse momento, o comando finaliza e…

0

Cache de Disco II

No último post sobre “Cache de Disco”, comentei sobre a importância do Write-Cache. Entretanto, existe um risco em deixá-lo habilitado. O que acontece com a memória cache se houver falta de energia? As informações gravadas em cache são voláteis e podem ser perdidas se acabar a energia elétrica. Isso pode causar perda de dados e…

0

Cache de Disco

Podemos encontrar o cache em um Storage, nas controladoras e nos próprios discos. Qual a importância do cache? Cache = Performance. Existe duas formas de utilizar o cache. Cache de Leitura Esse cache agiliza operações que façam a leitura do mesmo setor diversas vezes seguidas. Pergunta: Qual a probabilidade do SQL Server realizar diversas leituras…

0

Discos dedicados de Dados e Log

  Nas visitas a clientes, é muito comum ouvir perguntas sobre como otimizar a performance dos discos. A primeira recomendação que fazemos é para manter os arquivos de Dados e Log em discos separados. Por exemplo: Disco L: arquivos LDF (Log) Disco R: arquivos MDF/NDF (Dados) Disco S: arquivos MDF/NDF (Dados) Disco T: arquivos MDF/NDF…

12