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 / 50433
Accepted
SomeGuy
SomeGuy
Asked: 2013-09-25 08:52:23 +0800 CST2013-09-25 08:52:23 +0800 CST 2013-09-25 08:52:23 +0800 CST

Configurações de memória máxima no cluster SQL Server 2008 R2 de várias instâncias

  • 772
  • Cluster de várias instâncias do SQL Server 2008 R2 (no VMware vSphere 5.1)
  • 2 nós, cada um executando 2 instâncias (4 instâncias no total)
  • 16 GB de RAM por nó.

A única vez que as instâncias estão no mesmo nó é quando estou corrigindo o outro nó.

A recomendação de "memória máxima do servidor" de Brent Ozar é deixar o Windows com 4 GB ou 10%, o que for maior.

Como este é um cluster, como devo definir a memória máxima em cada nó? Devo tratar cada um como um servidor independente? Isso garantiria que a memória em cada nó não fosse desperdiçada. No entanto, em uma falha de nó, o total máximo de memória para todas as 4 instâncias excederia a memória do sistema do único nó. Isso causará algum problema no prazo até que o segundo nó seja recuperado? Preciso diminuir a configuração de memória máxima nas 4 instâncias até que o nó secundário seja recuperado? Ou o SQL Server é inteligente o suficiente para continuar funcionando (usando o arquivo de paginação, se necessário).

sql-server memory
  • 3 3 respostas
  • 5384 Views

3 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-09-25T12:16:17+08:002013-09-25T12:16:17+08:00

    Você deve absolutamente aproveitar ao máximo o hardware quando estiver em uma configuração ideal e ajustar quando estiver no modo de manutenção. E sim, você terá um problema enquanto ambas (ou todas as quatro?) instâncias estiverem ativas no mesmo nó. Como um failover induz um início de serviço no nó agora ativo, você pode ajustar a memória máxima de cada servidor nesse evento usando um procedimento de inicialização. Eu escrevi sobre isso aqui, mas por um motivo diferente (failover para um nó com uma quantidade diferente de memória):

    • https://sqlblog.org/2009/09/18/managing-multi-instance-cluster-failovers-with-different-hardware

    Basicamente, você só precisa verificar se as duas instâncias estão no mesmo nó (e isso exigirá que um servidor vinculado seja configurado em ambas as direções) e ajuste de acordo. Um exemplo muito rápido e completamente não testado com base na postagem do meu blog e supondo que haja apenas uma instância em cada nó por vez (a questão é um pouco ambígua se você tiver 2 instâncias no total ou 4):

    CREATE PROCEDURE dbo.OptimizeInstanceMemory
    AS
    BEGIN
       SET NOCOUNT ON;
    
       DECLARE
         @thisNode      NVARCHAR(255) = CONVERT(NVARCHAR(255),
                                      SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
         @otherNode     NVARCHAR(255),
         @optimalMemory INT = 12288, -- 12 GB
         @sql           NVARCHAR(MAX);
    
      SET @sql = N'SELECT @OtherNode = CONVERT(NVARCHAR(255), 
                            SERVERPROPERTY(N''ComputerNamePhysicalNetBIOS''));';
    
      EXEC [SERVER\INSTANCE].master..sp_executesql @sql, 
        N'@OtherNode NVARCHAR(255) OUTPUT', @OtherNode OUTPUT;
    
      IF @thisNode = @otherNode
      BEGIN -- we're on the same node, let's make everyone happy
        SET @optimalMemory = 6144;
      END
    
      SET @sql = N'EXEC sp_configure N''max server memory'', @om;
        RECONFIGURE WITH OVERRIDE;';
    
      EXEC                   master..sp_executesql @sql, N'@om INT', @optimalMemory;
      EXEC [SERVER\INSTANCE].master..sp_executesql @sql, N'@om INT', @optimalMemory;
    END
    GO
    
    EXEC [master].dbo.sp_procoption 
      N'dbo.OptimizeInstanceMemory', 'startup', 'true';
    

    Claro, crie-o novamente na outra instância, trocando o nome do servidor vinculado usado.

    Isso fica um pouco mais complexo se você precisar ajustar, dependendo se está compartilhando o nó atual com 1, 2 ou 3 outras instâncias.

    Observe que isso causará outros efeitos colaterais, como limpar o cache do plano (no caso de uma das instâncias não reiniciar ou falhar, caso em que o cache do plano estaria vazio de qualquer maneira), mas eles são indiscutivelmente melhores do que deixando ambas as instâncias presumindo que ainda têm 12 GB de memória para brincar - haverá muita discussão se ambas forem muito usadas.

    Você também pode considerar outras opções, como maxdop global, afinidade NUMA/CPU, etc., dependendo da sensibilidade do sistema à quantidade de recursos disponíveis.

    • 10
  2. Paul White
    2016-09-10T10:35:29+08:002016-09-10T10:35:29+08:00

    Resposta do Community Wiki coletando respostas parciais originalmente deixadas como comentários sobre a pergunta


    ...(usando arquivo de paginação se necessário).

    Jon Seigel : Sim, vai, mas você não quer fazer isso . O melhor conselho que ouvi (também de Brent) é definir os máximos para o melhor cenário e os mínimos para o pior cenário.

    Kin : Esses links irão ajudá-lo com o script:

    • Rebalanceamento de recursos do SQL Server em cluster de failover
    • SQL Server 2008 e práticas recomendadas de cluster R2
    • Use o script do PowerShell para equilibrar a memória

    Marca : Consulte Gerenciamento dinâmico de memória (TechNet)

    • 2
  3. Mark
    2016-09-10T07:24:12+08:002016-09-10T07:24:12+08:00

    Eu recomendo definir a memória máxima do servidor para o valor padrão de 2147483647, o que significa que o SQL Server gerenciará a memória dinamicamente.

    • -5

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