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 / 233601
Accepted
Learning_DBAdmin
Learning_DBAdmin
Asked: 2019-04-01 04:06:58 +0800 CST2019-04-01 04:06:58 +0800 CST 2019-04-01 04:06:58 +0800 CST

Subindexação agressiva e nenhum dado para índice ausente

  • 772

Eu sei que há muitos bloqueios no meu banco de dados e tentei o meu melhor para classificar isso por fornecedor, pois esse aplicativo é suportado por eles e ainda não produziu nenhum resultado bem-sucedido. De vez em quando, temos problemas de bloqueio e esse bloqueio fica tão grave e seu design é tão ruim que todo o portal cai, a menos e até que eu mate alguns SPIDs que estão mantendo bloqueio exclusivo (principalmente).

Estou usando sp_blitzindex há quase um ano e sou um grande fã do Kit de Primeiros Socorros fornecido pelo Sr. Brent Ozar e equipe. Quando executo sp_blitzindex neste banco de dados onde o bloqueio ocorre, ele diz - " Aggressive Under-Indexing: Total lock wait time > 5 minutes (row + page) with long average waits " com a prioridade de 10. Verifiquei a coluna URL e também verifiquei outras páginas relacionadas, mas não consegui muita ajuda.

Eu sei que as tabelas listadas aqui estão indexadas e mais alguns índices precisam ser criados, no entanto, quando executo o mesmo procedimento, ou seja, sp_blitzindex para esses objetos individualmente no nível da tabela usando o comando abaixo:

EXEC dbo.sp_BlitzIndex @DatabaseName='db1', @SchemaName='sch', @TableName='tab1';

Não recebo nenhum detalhe de índice ausente. Todos os índices existentes são utilizados e a contagem de leitura é menor que a contagem de gravação, apenas o problema destacado aqui está na coluna "Aguardas de bloqueio" para a chave primária.

Não tenho ideia de qual índice de coluna precisa ser criado. Eu também verifiquei sp_blitzlock para ver se eu poderia reunir mais informações que ajudariam, no entanto, tudo o que vejo há muitos impasses e os mesmos objetos são listados, o que é figurado na subindexação agressiva.

Também verifiquei a saída de sp_blitzcache passando a ordem de classificação como "leituras" e "duração" neste banco de dados específico, mas nenhuma solicitação de índice ausente. Existem avisos dizendo "Consulta Não Parametrizada" e "Consulta Não Parametrizada, não SARGables" e esses planos envolvem diferentes conjuntos de tabelas.

Qualquer ajuda é muito apreciada.

Version: Microsoft SQL Server 2014 (SP3) (KB4022619) - 12.0.6024.0 (X64) Sep 7 2018 01:37:51 Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 (Build 9600: ) (Hypervisor)
sql-server index
  • 1 1 respostas
  • 1475 Views

1 respostas

  • Voted
  1. Best Answer
    Erik Darling
    2019-04-01T05:36:00+08:002019-04-01T05:36:00+08:00

    Unidade Gratuita

    Como você está usando o First Responder Kit , continuarei usando-o em meus exemplos para ensiná-lo a diagnosticar isso melhor.

    Nenhum índice ausente?

    Por que o SQL Server não tem nenhuma solicitação de índice ausente nos DMVs ou nos planos de consulta?

    Primeiro, espere

    Use sp_BlitzFirst @SinceStartup = 1;e confira suas estatísticas de espera.

    Se LCK_as esperas não estiverem perto do topo da sua lista (10 primeiros ou mais) e se a Avg ms Per Waitcoluna não estiver mostrando valores acima de 1-2 segundos para as LCK_esperas, a situação pode não ser tão terrível. Eu provavelmente mudaria meu foco para outro lugar.

    NOZES

    Modificadores

    Em vez de usar sp_BlitzCachepara ver Reads ou Duration, use-o para ver estes:

    EXEC sp_BlitzCache @SortOrder = 'writes';
    EXEC sp_BlitzCache @SortOrder = 'avg writes';
    

    Você pode encontrar consultas que modificam muitos dados de uma só vez. Se você fizer isso, alterá-los para modificações em lote pode reduzir a sobrecarga de bloqueio.

    O problema com essa abordagem é que ela depende de planos de execução estarem no cache quando você estiver procurando por eles. Eles podem não ser, por vários motivos .

    Como você está executando sp_BlitzCache, preste atenção na linha no rollup Warnings (segunda saída);

    NOZES

    Problemas comuns

    Bloqueios longos podem vir de lugares que os usuários finais podem não perceber, como manutenção de índice.

    Se esta for a fonte, você pode considerar reduzir o nível de fragmentação em que você realiza a manutenção (50-80%), a frequência da manutenção (semanal ou mensal) ou simplesmente não fazer isso e atualizar apenas as estatísticas ( muito menos invasivo e menos propenso a bloqueio).

    Procure por padrões de código que usem BEGIN TRAN, e trabalhe muito antes de confirmar. Isso requer que você faça uma revisão de código. Não há atalho aqui, e normalmente é o tipo de coisa que você deseja que uma ferramenta de monitoramento faça.

    Procure sp_BlitzIndexpor chaves estrangeiras com ações em cascata . Estes podem causar uma quantidade dramática de bloqueio.

    Espero que isto ajude!

    • 13

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

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

  • O que significa "índice" em RDBMSs? [fechado]

  • Como criar um índice condicional no MySQL?

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