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 / 212569
Accepted
Elaskanator
Elaskanator
Asked: 2018-07-19 06:51:53 +0800 CST2018-07-19 06:51:53 +0800 CST 2018-07-19 06:51:53 +0800 CST

SQL Server mudou para usar arquivo de paginação exclusivamente em vez de RAM e efetivamente congelou o mundo

  • 772

Eu estava martelando minha instância do SQL Server ontem por cerca de 3 horas executando um cálculo intensivo que estava consumindo toda a RAM física alocada (tenho limitada a 2 GB devido ao meu hardware de estação de trabalho limitado) e de repente (e muitas outras coisas?) sua memória em uma mudança aparente para usar exclusivamente o arquivo de paginação.

Meu computador estava ficando tão incrivelmente atrasado que fui forçado a reiniciar (o que levou 10 minutos apenas para acessar as opções de energia).

Consegui obter uma captura de tela do gerenciador de tarefas antes de reiniciar (que deixo rodando em segundo plano com baixa velocidade de atualização). Com a janela redimensionada para mostrar o histórico máximo, ficou assim:

insira a descrição da imagem aqui

Esse comportamento surpreendente causou tempo de inatividade. Este é um recurso documentado?

Estou executando o Windows Server 2008 R2 com um mecanismo de banco de dados Enterprise 2014.

Obrigado.

sql-server memory
  • 2 2 respostas
  • 2115 Views

2 respostas

  • Voted
  1. Shanky
    2018-07-19T07:17:02+08:002018-07-19T07:17:02+08:00

    Esse comportamento surpreendente causou tempo de inatividade. Este é um recurso documentado?

    Sim, isto é, está documentado em RAM, memória virtual, arquivo de paginação e gerenciamento de memória no Windows . Citando este artigo de suporte

    A RAM é um recurso limitado, enquanto para a maioria dos propósitos práticos, a memória virtual é ilimitada. Pode haver muitos processos e cada processo tem seus próprios 2 GB de espaço de endereço virtual privado. Quando a memória usada por todos os processos existentes excede a RAM disponível, o sistema operacional move as páginas (partes de 4 KB) de um ou mais espaços de endereço virtual para o disco rígido do computador. Isso libera esse quadro de RAM para outros usos. Nos sistemas Windows, essas páginas “paginadas” são armazenadas em um ou mais arquivos (arquivos Pagefile.sys) na raiz de uma partição. Pode haver um desses arquivos em cada partição de disco. A localização e o tamanho do arquivo de paginação são configurados em Propriedades do sistema (clique em Avançado, clique em Desempenho e, em seguida, clique no botão Configurações).

    A razão pela qual ele congelou porque a velocidade do disco é muito mais lenta que a velocidade da memória. Após a paginação, a parte do disco estava se comportando como RAM.

    Para descobrir quanta memória foi paginada em um determinado momento, você pode usar DMV sys.dm_os_process_memory. Veja a diferença de coluna physical_memory_in_use_kbe virtual_address_space_committed_kb. A diferença dessas duas colunas forneceria o SQL Server usando memória paginada.

    select (virtual_address_space_committed_kb/1024) as Total_Memory_Used_MB, --Ram+page file
    (physical_memory_in_use_kb/1024) as Total_physical_memory_used_MB ,--PhysicalMemory Used
    ((virtual_address_space_committed_kb-physical_memory_in_use_kb)/1024) as Page_file_Utilization_MB
    from sys.dm_os_process_memory.
    

    Você pode evitar isso em maior medida, dando à conta de serviço do SQL Server Locked Pages in Memory Privilege . Isso não permitirá que a memória do SQL Server seja paginada, MAS ainda o Windows pode solicitar que o SQL Server reduza sua utilização de memória até a memória mínima do servidor depois disso, se ainda houver uma pressão de memória severa, o processo do sistema operacional será paginado e isso pode até levar ao desligamento inesperado do sistema operacional por isso tem cuidado. A melhor solução é adicionar mais RAM, neste caso especificamente.

    EDIT: Do seu comentário

    Já limito toda a instância do SQL Server a 2 GB de memória

    Ah!! essa é realmente uma quantidade muito pequena de memória para o SQL Server funcionar e isso também quando você está fazendo alguns testes severos

    • 6
  2. Best Answer
    6 revs, 4 users 48%user
    2018-07-19T07:47:49+08:002018-07-19T07:47:49+08:00

    Resposta do wiki da comunidade :

    O Windows chamou você, é assim que o Virtual Memory Manager funciona. Se você usar páginas de bloqueio na memória , não será capaz... embora você possa travar seu sistema em vez de ficar lento. A configuração adequada max server memorytambém é um bom começo.

    Se o conjunto de dados com o qual você está trabalhando for muito maior que 8 GB, talvez seja hora de hospedá-lo em um servidor com hardware mais apropriado. O SQL Server não funciona com páginas em disco (elas precisam ser lidas na memória) e as consultas podem solicitar memória para determinados operadores (classificações, hashes). O SQL Server pode usar memória além da memória máxima do servidor para essas concessões de memória. Consulte: Você deu memória suficiente ao SQL Server 2012 Standard Edition?

    Se e quando você atualizar para o SQL Server 2012 ou posterior, observe que foram feitas alterações significativas no gerenciamento de memória. Consulte Alterações no Gerenciamento de Memória a partir do SQL Server 2012 (11.x) . Em particular, o SQL Server pode usar memória (por exemplo, para ordenações e hashing) além do limite definido por max server memory(especialmente para operações columnstore), mas ainda tentará voltar a esse limite o mais rápido possível.

    • 2

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • 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
    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