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 / 173013
Accepted
Raidenlee
Raidenlee
Asked: 2017-05-09 11:31:35 +0800 CST2017-05-09 11:31:35 +0800 CST 2017-05-09 11:31:35 +0800 CST

SQL: alocação máxima de memória do servidor

  • 772

Eu tenho três instâncias de banco de dados SQL em um servidor em nuvem: A, B e C e a memória física instalada no servidor (RAM) é de 32 GB. O tamanho de A (dados + arquivo de log) é 44 GB e B (dados + arquivo de log) é de 41 GB. Ignoramos C, pois ele não possui bancos de dados e a memória máxima é de 500 MB.

Ambas as instâncias A e B têm sua memória definida para o tamanho padrão: 2147483647 MB. Embora não tenhamos tido problemas, isso definitivamente não é prático.

Após algumas pesquisas, com base na atividade do banco de dados, decidi que a alocação de memória da instância A deveria ser definida como 20 GB e B definida como 10 GB. No total 30/32 da memória física máxima no sistema. Abaixo mostra o consumo real de memória. Receio que se eu definir a memória máxima, isso diminuirá o tempo de resposta. Essa configuração é ideal para definir a memória do SQL Max Server para esses bancos de dados e como posso simular antes de aplicar?

insira a descrição da imagem aqui

sql-server
  • 4 4 respostas
  • 2358 Views

4 respostas

  • Voted
  1. Kin Shah
    2017-05-09T12:52:16+08:002017-05-09T12:52:16+08:00

    Uma recomendação geral de Jonathan (de SQLSkills)

    reserve 1 GB de RAM para o sistema operacional, 1 GB para cada 4 GB de RAM instalados de 4 a 16 GB e, em seguida, 1 GB para cada 8 GB de RAM instalados acima de 16 GB de RAM.

    Você pode usar dbatools do powershell Test-DbaMaxMemorypara calcular para você. O dbatools deve set-DbaMaxMemorydefinir a memória máxima para você em todos os seus servidores.

    Eu iria Test-DbaMaxMemoryverificar as recomendações primeiro e, quando estiver confortável, use set para configurá-lo em todos os seus servidores.

    • 4
  2. Wes
    2017-05-09T11:38:24+08:002017-05-09T11:38:24+08:00

    O que você verá é que menos dados podem ser armazenados em cache e, portanto, algumas consultas terão desempenho desagregado. O valor padrão para RAM apenas, meio que significa que o SQL Server usará 'tudo o que puder'. Depois de subir, ele não voltará até que o serviço seja reiniciado, pois reserva toda essa RAM (porque armazena dados em cache).

    Este é o meu recurso favorito para determinar quanta RAM um servidor realmente precisa. Meu único problema com isso é que ele realmente não leva em conta máquinas menores baseadas em VM e apenas assumiu que você PODE jogar 128 GB + em um servidor.

    https://www.brentozar.com/archive/2014/05/much-memory-sql-server-need/

    Uma regra geral é 10%, ou 8 GB, dedicado ao SO/Auxiliar, com o restante sendo dedicado ao SQL Server (por meio da configuração MAX Ram.) (10% ou 8 GB, o que for maior).

    • 3
  3. Best Answer
    BradC
    2017-05-09T11:40:26+08:002017-05-09T11:40:26+08:00

    Na minha opinião, você não está deixando perto o suficiente para o sistema operacional: em um sistema de 32 GB, eu provavelmente deixaria 4 GB ou mais. Lembre-se de que logons locais, tarefas SQL e pacotes SSIS e software de backup de terceiros e similares usam memória fora do espaço alocado para o próprio mecanismo SQL. Se eu souber que há pacotes SSIS que consomem muita memória executados regularmente, deixarei ainda mais memória para o sistema operacional.

    Como você divide o restante entre as 3 instâncias fica a seu critério. Não há risco (sério) de impacto alterando-os em tempo real, eles nem exigem uma reinicialização do SQL para entrar em vigor.

    Não se preocupe com uma pequena diferença no tamanho máximo planejado em relação ao que você vê no gráfico. SQL é um porco e usará tanta memória quanto você der. Se você reduzir o máximo, ele terá que liberar um pouco de memória, mas está apenas abrindo mão de uma parte de seu cache de dados local. Pode ser necessário voltar ao disco um pouco mais cedo para algumas consultas, mas duvido que você notará uma diferença.

    EDIT : Após alguma discussão nos comentários, não parece ser necessário reiniciar o SQL, mesmo quando o MaxMem é ​​reduzido abaixo do valor atualmente usado .

    • 2
  4. Henrico Bekker
    2017-05-09T11:44:36+08:002017-05-09T11:44:36+08:00

    Você fez uma análise para ver quanta memória real cada instância requer? Evite usar o Gerenciador de Tarefas para determinar os requisitos de memória SQL, existem métricas de desempenho adequadas a serem usadas para uso de memória SQL.

    • 0

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