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 / 231466
Accepted
SEarle1986
SEarle1986
Asked: 2019-03-07 07:04:48 +0800 CST2019-03-07 07:04:48 +0800 CST 2019-03-07 07:04:48 +0800 CST

Quando as estatísticas do _WA_Sys_ são atualizadas?

  • 772

Eu tenho algumas das estatísticas _WA_Sys_ geradas automaticamente no meu banco de dados que não são atualizadas há algum tempo (em comparação com outras estatísticas na mesma tabela)

A regra geral parece ser em tabelas >500 linhas que as estatísticas são atualizadas em uma alteração de dados de 20% + 500 linhas.

No entanto, posso ver usando a seguinte consulta

SELECT  t.name,
        i.name,
        i.rowcnt,
        i.rowmodctr,
        p.last_updated
FROM    sys.sysindexes i
        JOIN sys.tables t
            ON i.id = t.object_id
        JOIN sys.stats s
            ON s.object_id = t.object_id AND i.name = s.name
        CROSS APPLY sys.dm_db_stats_properties(s.object_id,s.stats_id) p
WHERE   rowmodctr > 0
ORDER BY i.rowmodctr DESC

Que existe uma tabela com várias estatísticas _WA_Sys_ que estão desatualizadas (e têm um rowmodctr maior que 20% + 500)

Se executar uma consulta na tabela e adicionar uma das colunas associadas às estatísticas _WA_Sys_ desatualizadas na cláusula WHERE e verificar a data de atualização da estatística, posso ver que ela foi atualizada.

Se eu executar a mesma consulta com a cláusula WHERE novamente, a estatística não será atualizada

Parece que as estatísticas do _WA_Sys são atualizadas quando uma consulta é executada que as usará e elas estão desatualizadas?

sql-server-2014 statistics
  • 1 1 respostas
  • 1094 Views

1 respostas

  • Voted
  1. Best Answer
    Erik Darling
    2019-03-07T07:25:32+08:002019-03-07T07:25:32+08:00

    O SQL Server atualiza automaticamente apenas as estatísticas que ele usa. Ele pode não estar usando ativamente as estatísticas _WA_Sys para estimativa de cardinalidade, embora possa carregá-las como parte da decisão.

    Para ver quais estatísticas estão sendo usadas para sua consulta, adicione isso ao final de sua consulta e procure na guia Mensagens:

    OPTION(QUERYTRACEON 3604, QUERYTRACEON 2363);

    Se seu banco de dados estiver em um nível de compatibilidade anterior a 2014, você precisará destes:

    OPTION(QUERYTRACEON 3604, QUERYTRACEON 9292, QUERYTRACEON 9204);

    Isso não lhe dirá por que não está usando certas estatísticas, embora geralmente se houver estatísticas criadas com uma porcentagem de amostragem mais alta na mesma coluna, as estatísticas com porcentagens de amostragem mais baixas serão desfavorecidas.

    Lembre-se de que as atualizações de estatísticas não ocorrem na modificação, apenas quando são executadas consultas que as usam

    • 10

relate perguntas

  • Obtendo estatísticas de uma tabela no Oracle

  • Método geral rápido para calcular percentis

  • Medianas, Modos, Percentis e OLAP

  • Estimando a distribuição de acesso de linha no mysql

  • O que são estatísticas de banco de dados e como posso me beneficiar delas?

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