Meu entendimento:
No Servidor SQL,
- Buffer Pool é onde todos os Data/Proc/Log Cache , etc estão localizados.
- Espaço de endereço virtual é um local lógico que se refere a locais físicos (na RAM ou no arquivo de paginação).
Mas esta afirmação é confusa para mim:
"..A alocação de MultiPage ocorre na área VAS e a alocação de página única vem do Buffer Pool..."
Qual é a diferença entre Buffer Pool e VAS?
Nenhum buffer pool e VAS não são a mesma coisa. No SQL Server, o acesso direto à memória física não é permitido, nenhuma solicitação de memória que vem é primeiro mapeada para processar VAS e, em seguida, se o SQL Server encontrar memória livre, ele mapeará esse endereço VAS para a memória física e, em seguida, a memória será confirmada.
Bufferpool é memória física VAS é memória virtual.
EVA
VAS é a quantidade total de espaço de endereço virtual visível para processar. O VAS total no sistema operacional Windows é dividido em VAS para processo de sistema operacional e VAS para aplicativo. O SQL Server é executado como um aplicativo. Para um sistema de 64 bits, o VAS total é de 16 TB. Portanto, agora o servidor SQL e o processo do Windows obtêm VAS de 8 TB.
Sempre que um novo processo quiser ler dados ou gravar dados na memória, ele fará referência à memória em sua região VAS para que o novo processo veja o VAS de 8 TB e, em seguida, seja mapeado para a memória física. Essa memória física seria seu buffer pool
Conjunto de buffers
Um buffer é uma página de 8 KB na memória, do mesmo tamanho de uma página de dados ou de índice. Você pode considerar o buffer como um quadro que contém dados e páginas de índice quando eles são trazidos do disco para a memória. O gerenciador de buffer do SQL Server gerencia a tarefa de ler as páginas de dados no buffer pool e também gravá-las no disco. É um armazenamento de memória reservado para o SQL Server e, por padrão, se você não definir um valor para ele, ocupará o máximo de memória possível. O buffer pool aloca memória apenas para solicitações que requerem menos de 8 KB de páginas, esse recurso mudou no SQl Server 2012, onde o buffer pool não tem significado, é apenas consumidor. É mais fácil alocar uma pequena quantidade contígua de memória do que uma grande quantidade contígua (grande quantidade contígua pode não estar livre ou presente para alocar).
sistema de 32 bits
No sistema de 32 bits, o SQL Server possui VAS de 2G. Se o sistema for WOW, ele teria VAS de 4 G. Portanto, isso se torna uma limitação para o processo que requer uma grande quantidade de memória contínua e essa memória não é satisfeita pelo buffer pool, mas fora do buffer pool.
Esta declaração é verdadeira apenas para SQL Server 2005 a 2008 R2. A alocação de página >8KB não é feita por buffer pool. O alocador que faz a alocação de página para o buffer pool é
single page allocator
while alocador que faz a alocação para páginas de memória > 8KBmulti page allocator
e a memória para isso é alocada fora do buffer pool.Para o SQL Server 2012 existe
Any page allocator
o que faz alocação para ambas as páginas <=8KB e páginas >=8KB