AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 42087
Accepted
SQL Learner
SQL Learner
Asked: 2013-05-14 11:32:49 +0800 CST2013-05-14 11:32:49 +0800 CST 2013-05-14 11:32:49 +0800 CST

Quando o SQL Server usa alocações de várias páginas

  • 772

Quais são os consumidores de MPA (alocações de várias páginas) no SQL Server?

Eu sei que as páginas de dados são sempre 8K. Existe uma situação em que a página de dados/índice faz uso do MPA? Faz sentido que os planos de execução possam usar MPA, pois podem exceder 8 KB.

Existe um blog aqui que sugere o uso de MPA, mas se refere a stored procedures (uma com 500 parâmetros). Na captura de tela anexa, vejo um plano de execução usando cerca de 11 MB; isso usa MPA? Existe uma maneira de confirmar que a alocação de memória para o plano de execução está usando alocação de várias páginas?

insira a descrição da imagem aqui

Minha confusão é o que realmente usa o MPA (alocador de várias páginas). O exemplo no link que postei mostra um plano de execução complexo que exigirá alocação contígua de 8 KB.

Uma resposta abaixo sugere que há muitas coisas como servidor vinculado ou procedimentos armazenados estendidos que podem usar MPA. O que, por algum motivo, não consigo concordar. Por exemplo, procedimentos armazenados estendidos podem ser código C++ usando HeapAlloc, sobre o qual o servidor SQL tem pouco controle para gerenciar sua memória (deve estar no nível do sistema operacional Windows).

Os procedimentos armazenados estendidos, mesmo no SQL 2012, ainda consomem memória fora do pool de buffers, portanto, não têm nada a ver com alocação de várias páginas. O mesmo se aplica a servidores vinculados, especialmente se você usar provedores de terceiros (por exemplo, ORACLE).

sql-server sql-server-2008-r2
  • 1 1 respostas
  • 2637 Views

1 respostas

  • Voted
  1. Best Answer
    Paul White
    2013-07-04T21:10:43+08:002013-07-04T21:10:43+08:00

    No SQL Server 2008 R2 e anteriores, as seguintes alocações vêm da área MemToLeave (MTL):

    • Servidores vinculados
    • documentos XML
    • Procedimentos armazenados estendidos
    • sp_OACcriar chamadas
    • Planos de consulta que excedem 8 KB
    • SQLCLRGenericName
    • Backups que usam um grande valor paraMAXTRANSFERSIZE
    • Usando um tamanho de pacote de rede acima de 8192 bytes

    Informações extraídas deste artigo pelo engenheiro de suporte da Microsoft Amit Banerjee.

    O SQL Server 2012 usa o alocador de página de qualquer tamanho .

    Mais informações estão incluídas neste artigo da Base de Dados de Conhecimento da Microsoft .

    extração de KB

    As alocações de várias páginas (MPA) também vêm da área MTL, antes do SQL Server 2012. Se uma alocação feita pelo SQL Server é feita por meio do MPA ou do alocador de página única (SPA), depende exclusivamente do tamanho da solicitação de alocação. Se tiver 8 KB ou menos, será alocado via SPA e roubado do buffer pool. Se for 8 KB ou mais, MPA é usado.

    Eu sei que a página de dados é sempre 8K, então existe uma situação em que a página de dados/índice faz uso de MPA?

    Não, os dados e as páginas de índice são sempre armazenados em cache no buffer pool.

    Existe uma maneira de confirmar que a alocação de memória para o plano de execução está usando alocação de várias páginas?

    Os planos em cache têm uma estrutura complexa . As alocações individuais dentro dessa estrutura são geralmente alocações de 8 KB, mas certas consultas (geralmente aquelas que contêm INlistas longas ou muitos parâmetros para uma chamada de procedimento armazenado) podem exigir uma alocação MPA. Estes são comparativamente raros. É possível consultar DMVs do SQL Server para determinar a divisão entre SPA e MPA para um plano em cache.

    • 6

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve