Tempdb and I/O misconceptions


(Português) - (English)

 

Muitas dúvidas sempre pairam quando o assunto é a criação de arquivos extras para a tempdb, recentemente eu acompanhei uma thread no fórum de SQL Server onde esse assunto foi discutido e, gostaria de acrescentar alguns comentários baseados no meu entendimento do assunto:

- O mito do SQL Server alocar uma thread para cada arquivo físico está incorreto. O SQL Server possui um pool de threads que é distribuído entre as conexões ativas no SQL Server (quando existe uma tarefa ativa) e, de acordo com o MAXDOP e pressão no servidor, a engine define quantas threads cada conexão "ganha". Uma vez que a consulta faz uma requisição de I/O, essa thread será utilizada para enviar a requisição para o subsistema de I/O, então um arquivo pode receber requisições de diversas threads.

- A adição de mais arquivos à tempdb ajuda, e muito, ambientes mais críticos onde normalmente existe uma pressão maior na tempdb, já que estão sendo processados mais batches simultaneamente. Note que todo objeto criado na tempdb é controlado inicialmente através das páginas PFS e SGAM, se eu tenho muita manipulação dessas páginas, o SQL Server possivelmente terá um ponto de contenção. E a contenção está em memória, pois essas páginas são hot spots e não existe porque serem escritas em disco.

Quando se cria mais arquivos para a tempdb (mesmo que seja no mesmo disco), cada arquivo terá suas páginas de controle e o SQL Server poderá trabalhar com um mecanismo de rodízio (round robin) entre os arquivos, dividindo a pressão sobre as páginas de controle pelo número de arquivos. Note que para isso acontecer, os arquivos devem estar com tamanhos semelhantes, senão o SQL Server vai favorecer arquivos maiores, alterando a distribuição igualitária de tarefas.

Para quem quiser saber mais sobre o assunto, acesse:

http://blogs.msdn.com/luti/archive/2006/06/05/618151.aspx

http://blogs.msdn.com/luti/archive/2006/06/05/618151.aspx

http://blogs.msdn.com/psssql/archive/2007/02/21/sql-server-urban-legends-discussed.aspx

 

[]s
Luciano Caixeta Moreira
luciano.moreira@microsoft.com
===============================================
This post is provided "AS IS" and confers no right
===============================================

Skip to main content