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 / 43452
Accepted
SQL Learner
SQL Learner
Asked: 2013-05-31 07:26:20 +0800 CST2013-05-31 07:26:20 +0800 CST 2013-05-31 07:26:20 +0800 CST

memória usada por bloqueios

  • 772

Estou curioso, um SQL 2012 Enterprise Edition com 128 GB de RAM, tamanho do banco de dados é de 370 GB e crescente, quantidade de memória usada por bloqueios (OBJECTSTORE_LOCK_Manager) funcionário da memória mostrando 7466016 KB. Também posso confirmar isso olhando para o contador de desempenhoselect * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)'

No entanto, quando executo a consulta

select count(*) from sys.dm_tran_locks

mostra apenas 16 fechaduras. Então, o que está usando mais de 7 GB de bloqueios. Existe uma maneira de descobrir?

Isso significa que, uma vez que a memória para bloqueios foi alocada, o SQL ainda não a desalocou? Na última hora, não vejo a contagem de bloqueios excedendo 500, mas a memória de bloqueio permanece a mesma.

A memória máxima do servidor é de 106 GB. Não usamos páginas de bloqueio na memória e não vejo nenhuma pressão de memória ou erros no log de erros nas últimas 12 horas. O contador de MBytes disponíveis mostra mais de 15 GB de memória disponível.

O monitor de atividade mostra consistentemente 0 tarefas em espera, obviamente sem bloqueio.

Considerando que o bloqueio do servidor SQL ocupa cerca de 100 bytes de memória, 7 GB é muita memória e tentar descobrir quem está usando.

Eu executo uma transação superior do relatório do painel do servidor por contagem de bloqueio, ele diz "atualmente nenhuma transação de bloqueio está em execução no sistema. No entanto, a memória de bloqueio ainda é exibida conforme indicado acima. O banco de dados está mais ocupado durante a noite.

sql-server sql-server-2012
  • 3 3 respostas
  • 6222 Views

3 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2013-05-31T08:23:53+08:002013-05-31T08:23:53+08:00

    O gerenciador de bloqueio é um caminho de código crítico tão quente (provavelmente o caminho de código crítico mais quente) que, se tivesse que esperar por uma alocação de memória para cada desempenho de bloqueio, seria prejudicado. Provavelmente aloca grandes blocos de memória e os gerencia por conta própria. Eu não ficaria surpreso se ele também reservasse memória para não ficar sem memória em alguns caminhos de código críticos.

    • 10
  2. Mark Storey-Smith
    2013-05-31T15:57:23+08:002013-05-31T15:57:23+08:00

    Adendo à resposta de @RemusRusanu (não caberia em um comentário)...

    Dado que o mecanismo de banco de dados permitirá até 5.000 bloqueios por objeto antes de escalar e levando em consideração a resposta de Remus sobre a natureza crítica do gerenciador de bloqueios, a alta reserva começa a parecer plausível:

    5000 (bloqueios) * 10 (tabelas ou índices) * 96 (bytes por bloqueio) * 1000 (consultas simultâneas) = ​​4,47 GB

    Eu especularia que a reserva é derivada de uma combinação da RAM disponível e da carga de trabalho atual, mas não a vi documentada ou postada em nenhum blog. Também poderia especular que sua memória de 128 GB teria sido considerada generosa em 2008 e a reserva de 7 GB indica a expectativa de uma carga de trabalho OLTP pesada nesse tamanho.

    • 8
  3. Stoleg
    2013-05-31T07:43:15+08:002013-05-31T07:43:15+08:00

    sys.dm_tran_lock mostra recursos bloqueados e solicitações de bloqueios em recursos , não linhas individuais, que foram bloqueadas. Cada recurso bloqueado manterá muitas linhas e, possivelmente, outros objetos bloqueados.

    Retorna informações sobre os recursos do gerenciador de bloqueio atualmente ativos. Cada linha representa uma solicitação atualmente ativa para o gerenciador de bloqueio para um bloqueio que foi concedido ou está aguardando para ser concedido.

    As colunas no conjunto de resultados são divididas em dois grupos principais: recurso e solicitação. O grupo de recursos descreve o recurso no qual a solicitação de bloqueio está sendo feita e o grupo de solicitações descreve a solicitação de bloqueio.

    • 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

    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