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 / 21357
Accepted
SQL Learner
SQL Learner
Asked: 2012-07-24 13:31:38 +0800 CST2012-07-24 13:31:38 +0800 CST 2012-07-24 13:31:38 +0800 CST

Memória do espaço de trabalho do SQL Server

  • 772

A memória do espaço de trabalho (parte do buffer pool) é limitada apenas para Hash Join, Sort etc.?

Se eu tiver uma consulta que usa uma junção de loop aninhada (sem uma classificação ou hash), ela não usaria a memória do espaço de trabalho?

Onde seria criada a tabela de trabalho para uma consulta simples que retorna 100 linhas? em Tempb..

sql-server sql-server-2008
  • 1 1 respostas
  • 912 Views

1 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2012-07-25T00:30:11+08:002012-07-25T00:30:11+08:00

    Se uma consulta não tiver uma concessão de memória, ela não poderá solicitar memória desse 'espaço de trabalho'. Você pode ver quais consultas solicitam memória em sys.dm_exec_query_memory_grants. Como você já percebeu, apenas alguns operadores solicitam concessões de memória, ou seja, os operadores que exigem algum armazenamento intermediário significativo. Um loop aninhado não requer nenhum armazenamento, pois opera uma linha por vez e, portanto, não solicitará uma concessão de memória. Um hash requer memória para criar as tabelas de hash e uma classificação obviamente requer tabelas de classificação. As consultas sem concessão ainda precisam de alguma memória, mas isso se soma a quantidades triviais (talvez alguns KBs) e essa memória é obtida de alocadores de execução comuns . Uma concessão é medida geralmente em MBs e pode chegar a centenas de MBs.

    A memória reservada para concessões não é exatamente 'parte do buffer pool', o que faz parecer que é uma parte separada do buffer pool. É mais uma área cinzenta. A concessão de memória é suportada pelo buffer pool. Uma consulta que recebe uma quantidade X de memória coloca uma reserva no BP. Ele não 'rouba' as páginas da BP imediatamente. Mas como a (parte não roubada de) BP contém dadospáginas, o BP pode cumprir a promessa de reserva porque pode despejar páginas de dados no disco a qualquer momento que desejar. À medida que a consulta avança pode solicitar ao BP páginas da outorga que adquiriu (da reserva) e à medida que o BP atende ao pedido, as páginas entregues à consulta tornam-se realmente 'roubadas', ou seja. o BP não pode mais usá-los para dados até que a consulta os libere de volta. Para garantir que todas as concessões possam ser honradas, a soma das reservas não pode exceder o tamanho do BP (ou seja, não há superalocação no estilo VM). Essas reservas de concessão tendem a errar no lado da superalocação por uma margem generosa, pois as coisas podem ficar muito feias se uma consulta consumir toda a concessão e ainda precisar de memória: ocorrem derramamentos (extremamente lentos) ou a consulta pode desistir e gerar erros.

    Consulte Compreendendo a concessão de memória do servidor SQL

    Link Archive.org

    • 5

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

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

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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