MSDTC Internals

Essa semana me surpreendi com o SQL Saturday #325. Fiquei tão empolgado que resolvi investir um tempo para escrever esse post. A escolha do tema foi através de uma conversa no twitter. Obrigado @DemetrioSQLDBA e @SQLInsane pela sugestão. Frequentemente associamos o SQL Server às operações transacionais. Todas as informações são consistentes graças ao Transaction Log….

7

Arquitetura do SQL Server

Finalmente publicado o primeiro vídeo da série Fundamentos de Banco de Dados. https://channel9.msdn.com/Series/SQL-Fundamentos/Arquitetura-do-SQL-Server Nesse episódio vamos falar sobre as grandes famílias de componentes. Para quem já viu minhas palestras, deve ter notado que sempre comento sobre a separação entre Relational Engine (Linguagem, compilação e execução) e Storage Engine. Além disso, temos a família de Protocols…

9

A evolução do SQL Server 7.0 ao 2014

Sphynx, Shiloh, Yukon, Katmai, Kilimanjaro, Denali.. você já ouviu falar desses nomes? Eles são os codinomes do SQL Server. Quer saber mais? Acabei de publicar o vídeo da apresentação “A evolução do SQL Server 7.0 ao 2014”. https://channel9.msdn.com/blogs/fcatae/Evolucao-SQL-Server    

0

Vídeos de Fundamentos Banco de Dados

Decidi começar um experimento diferente, que vai além do blog, que é uma série de vídeos explicativos sobre o funcionamento do SQL Server. Há muito tempo tenho pensado nessa ideia e finalmente se tornou realidade. A série estréia no Channel 9.   https://channel9.msdn.com/Series/SQL-Fundamentos Ainda não planejei o número exato de vídeos. Gostaria de fechar em…

5

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

A importância dos bancos relacionais em cenários de Big Data

No mês de março tive o privilégio de escrever para o Editorial do MSDN Newsletter. Tenho acompanhado um pouco o cenário de Big Data e, com um pouco de conhecimento do mercado corporativo, decidi falar sobre onde o SQL Server se encaixa. Segue o texto na íntegra: Neste mês anunciamos o lançamento oficial do SQL…

6

Logs Circulares 2

Encontrei um exemplo nos meus arquivos. Não sei exatamente quem me passou ou se encontrei no documento de performance, mas vou deixar registrado no blog. Frequentemente utilizo o script para lembrar da sintaxe do XQuery e da conversão de timestamp. SELECT CONVERT (varchar(30), GETDATE(), 121) as runtime, DATEADD (ms, -1 * (sys.ms_ticks – a.[Record Time]),…

0

Logs Circulares

Semana passada alguém me perguntou sobre esse “Ring Buffer”. É incrível a coincidência de que sempre que falo sobre memória, alguém comenta sobre esse recurso. Esse assunto sempre volta a tona, eu mesmo já escrevi um post sobre Ring Buffer e agora estou escrevendo novamente. O que é um Ring Buffer? A tradução literal é…

6

SQL Server 2014 RTM

Hoje foi lançado oficialmente o SQL Server 2014. General Availability (GA) será no dia 1 de abril. Nessa data a mídia será liberada, assim como a imagem da VM no Windows Azure. The Official Microsoft Blog: SQL Server 2014 released to manufacturers, will be generally available April 1 http://blogs.technet.com/b/microsoft_blog/archive/2014/03/18/sql-server-2014-released-to-manufacturers-will-be-generally-available-april-1.aspx Essa é uma excelente notícia não…

8

Esperas CMEMTHREAD e MemObj

Nos últimos posts, falamos sobre o Memory Clerk e o MemObj. Monitorando Memória com os Clerks http://blogs.msdn.com/b/fcatae/archive/2014/02/25/monitorando-memoria.aspx Usando os Memory Objects http://blogs.msdn.com/b/fcatae/archive/2014/03/05/memoria-memory-object.aspx Nesse artigo vou utilizar um post do Bob Dorr sobre o CMemThread How It Works: CMemThread and Debugging Them http://blogs.msdn.com/b/psssql/archive/2012/12/20/how-it-works-cmemthread-and-debugging-them.aspx Operador new O SQL Server, assim como grande parte dos programas escrito em…

5

Usando os Memory Objects

Tudo começou com a discussão de XML. Memory Leak usando OPENXML http://blogs.msdn.com/b/fcatae/archive/2014/02/18/sp-xml-preparedocument-leak.aspx Existem duas procedures: sp_xml_preparedocument sp_xml_removedocument A primeira serve para reservar a memória para o documento, enquanto que a segunda libera o recurso. Existe uma forma de causar um Memory Leak chamando várias vezes a procedure de “prepare” e esquecendo de liberar a memória…

0

Foto da Alocação de Memória

Existe uma forma “hardcore” para acompanhar todas as alocações de memória no SQL Server. Podemos criar um pacote XEvent e acompanhar o evento “XeSosPkg::page_allocated” e gerar um stack trace (stack dump). Por exemplo, nas alocações de memória na procedure sp_xml_preparedocument, observamos as alocações de memória realizadas pelo componente MSXMLSQL. 14d9dc3c 781181f8 sqllang!CIMallocYieldWrapper::Alloc 14d9dc58 7811eb23 MSXMLSQL!_MemAlloc+0x27…

0

Monitorando Memória com os Clerks

No último post, comentei sobre um erro relacionado à falta de memória no servidor SQL Server. Essa era a mensagem de erro: Msg 6624, Level 16, State 7, Procedure sp_xml_preparedocument, Line 1 XML document could not be created because server memory is low. Use sp_xml_removedocument to release XML documents. Como próximo passo, minha sugestão foi…

0

Memory Leak usando OPENXML

Existem duas formas de acessar dados XML de dentro do SQL Server. Função OPENXML Tipo nativo XML Nesse post, falaremos sobre o uso do OPENXML – disponível desde o SQL Server 2000. SQL Books Online apresenta um exemplo bastante simples: Examples: Using OPENXML http://technet.microsoft.com/en-us/library/ms187897.aspx DECLARE @DocHandle int DECLARE @XmlDocument nvarchar(1000) SET @XmlDocument = N'<ROOT> <…

0

Que!? PED XING?

O que você faria ao encontrar uma placa escrita SLOW PED XING enquanto dirige em direção ao trabalho? Acelera ao máximo para fugir desse Ped Xing? Há 7 anós me deparei com uma dessas placas na frente do prédio 40 da Microsoft. Claro que isso me deixou bastante curioso e fui perguntar. Para minha surpresa,…

0

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

SQL Server Memory Manager

Amanhã recomeçamos mais um novo SQL BOOTCAMP de Ramp-up com os novos engenheiros do time. Começaremos pontualmente às 9h com um dos assuntos mais obscuros do mundo SQL Server: gerenciamento de memória. O blog do Slava ainda é considerado a documentação mais precisa sobre o assunto. SQLOS’s memory manager and SQL Server’s Buffer Pool http://blogs.msdn.com/b/slavao/archive/2005/02/11/371063.aspx…

8

Misterioso Comando KILL

Estou gastando o terceiro post para falar sobre o comando KILL. Se você não leu os outros, dê uma olhada: 1. Desafio: Comando KILL demorado (infinito) 2. Qual o significado de PREEMPTIVE_OS_PIPEOPS? Dessa vez, vou mostrar como que o comando KILL realmente funciona e como que ele consegue “matar” os processos. DBCC STACKDUMP Sim, esse…

4