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…


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…


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]),…


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…


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…


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…


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…


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> <…


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…


Desafio: Qual a distribuição de memória?

Desde o SQL Server 2000, existem 3 grandes famílias de memória. São elas: Database Cache: Memória dedicada ao cache de páginas de dados (tabelas e índices) Stolen Memory: Memória roubada (!?!?) Free Memory: Memória livre na instância SQL server Qual das figuras abaixo representa uma situação típica de um servidor saudável e atendendo uma alta…