Pontos de conhecimento relacionados às informações estatísticas do GreatSQL

Pontos de conhecimento relacionados:

INNODB_STATS_PERSIST=ONOu, STATS_PERSIST=1ao definir uma única tabela, as estatísticas do otimizador são mantidas no disco. Por padrão, innodb_stats_persistentestá habilitada.

Estatísticas persistentes são armazenadas em tabelas mysql.innodb_table_statse .mysql.innodb_index_stats

A variável habilitada por padrão innodb_stats_auto_recalccontrola se as estatísticas são calculadas automaticamente quando mais de 10% das linhas da tabela são alteradas. STATS_AUTO_RECALCO recálculo automático de estatísticas pode ser configurado para uma tabela individual especificando a cláusula ao criar ou alterar a tabela .

Devido à natureza assíncrona do recálculo automático de estatísticas que ocorre em segundo plano, mesmo se habilitado innodb_stats_auto_recalc, as estatísticas não serão recalculadas imediatamente após a execução de uma operação DML que afete mais de 10% da tabela. Em alguns casos, o recálculo das estatísticas pode demorar alguns segundos. Se as estatísticas mais recentes forem necessárias imediatamente, execute ANALYZE TABLE para iniciar um recálculo síncrono (em primeiro plano) das estatísticas.

Se desativado innodb_stats_auto_recalc, você poderá garantir a precisão das estatísticas do otimizador executando uma instrução ANALYZE TABLE após fazer um grande número de alterações em uma coluna de índice.

As estatísticas do otimizador não são persistidas no disco ao criar ou alterar uma única tabela INNODB_STATS_PERSIST=OFFusando . STATS_PERSIST=0Em vez disso, as estatísticas são armazenadas na memória e perdidas quando o servidor é desligado. As estatísticas também são atualizadas periodicamente através de determinadas ações e sob determinadas condições.

Quando um índice é adicionado a uma tabela existente ou quando uma coluna é adicionada ou removida, innodb_stats_auto_recalcas estatísticas do índice são calculadas e adicionadas à innodb_index_statstabela, independentemente do valor de .

Cinco parâmetros que afetam as estatísticas

  • innodb_stats_persistent: especifica se as estatísticas do índice InnoDB são persistidas no disco. Ele está habilitado por padrão.

  • innodb_stats_persistent_sample_pages: o número de páginas de índice a serem amostradas ao estimar a cardinalidade e outras estatísticas para colunas de índice (como aquelas calculadas pela tabela de análise). Aumentar esse valor pode melhorar a precisão das estatísticas do índice, mas innodb_stats_persistent_sample_pagesdefinir um valor mais alto pode fazer com que as tabelas de análise demorem mais para serem executadas.

  • innodb_stats_auto_recalc: faz com que o InnoDB recalcule automaticamente as estatísticas persistentes após alterações significativas nos dados da tabela. O limite é 10% do número de linhas na tabela e está ativado por padrão.

  • innodb_stats_include_delete_marked: Se o InnoDB inclui registros marcados para exclusão ao calcular estatísticas do otimizador persistente, desativado por padrão.

  • innodb_stats_transient_sample_pages: o número de páginas de índice a serem amostradas ao estimar a cardinalidade e outras estatísticas para colunas de índice (como aquelas calculadas pela tabela de análise). O valor padrão é 8. Aumentar esse valor pode melhorar a precisão das estatísticas do índice, melhorando assim os planos de execução de consultas, mas ao custo de maior E/S ao abrir tabelas do InnoDB ou recalcular estatísticas. Este parâmetro só se aplica se desabilitado para a tabela innodb_stats_persistent, se habilitado INNODB_STATS_PERSISTele é aplicado INNODB_STATS_PERSIST_SAMPLE_PAGESem seu lugarinnodb_stats_sample_pages

Resumir:

1. A informação estatística não persistente será atualizada automaticamente nas seguintes situações:

  1. Executar ANALISAR TABELA
  2. innodb_stats_on_metadata=ONNeste caso, execute SHOW TABLE STATUS, SHOW INDEX e consulte TABLES e STATISTICS em INFORMATION_SCHEMA.
  3. Com a função --auto-rehash habilitada, use o cliente mysql para fazer login
  4. A tabela é aberta pela primeira vez
  5. Desde a última atualização da informação estatística, os dados da tabela 1/16 foram modificados.

As desvantagens das estatísticas não persistentes são óbvias. Se um grande número de tabelas começar a atualizar as estatísticas após a reinicialização do banco de dados, isso terá um grande impacto na instância, portanto, as estatísticas persistentes são usadas atualmente.

2. As estatísticas de persistência serão atualizadas automaticamente nas seguintes situações:

  1. INNODB_STATS_AUTO_RECALC=ONNeste caso, 10% dos dados da tabela são modificados

  2. Adicionar novo índice

3. Tratamento de informações estatísticas imprecisas

Verificamos o plano de execução e descobrimos que o índice correto não foi usado. Se for causado por uma grande diferença nas informações estatísticas em innodb_index_stats, pode ser tratado das seguintes maneiras:

  1. Atualize manualmente as informações estatísticas. Observe que bloqueios de leitura serão adicionados durante a execução:

ANALYZETABLE TABLE_NAME;

  1. Se as informações estatísticas ainda estiverem imprecisas após a atualização, você pode considerar adicionar páginas de dados para amostragem de tabela. Há duas maneiras de modificá-las:

​ a. O INNODB_STATS_PERSISTENT_SAMPLE_PAGESvalor padrão das variáveis ​​globais é 20;

b. Uma única tabela pode especificar a amostragem da tabela:

ALTER TABLE TABLE_NAME STATS_SAMPLE_PAGES=40;

Após o teste, STATS_SAMPLE_PAGESo valor máximo aqui é 65535. Se for excedido, um erro será relatado.

c. Atualizar manualmente innodb_table_statsas innodb_index_statsestatísticas da tabela (modificar essas duas tabelas não gerará o log binário) e, em seguida, usar FLUSH TABLE tbl_nameinstruções para carregar as estatísticas atualizadas.


Aproveite o GreatSQL :)

Sobre GreatSQL

GreatSQL é um banco de dados doméstico independente de código aberto adequado para aplicativos de nível financeiro. Possui muitos recursos básicos, como alto desempenho, alta confiabilidade, alta facilidade de uso e alta segurança. e é utilizado em ambientes de produção online, totalmente gratuito e compatível com MySQL ou Percona Server.

Links relacionados: Guia da comunidade GreatSQL GitHub Bilibili

Comunidade GreatSQL:

imagem

Sugestões e feedback de recompensas da comunidade: https://greatsql.cn/thread-54-1-1.html

Detalhes do envio do prêmio do blog da comunidade: https://greatsql.cn/thread-100-1-1.html

(Se você tiver alguma dúvida sobre o artigo ou tiver ideias exclusivas, você pode acessar o site oficial da comunidade para perguntar ou compartilhá-las ~)

Grupo de intercâmbio técnico:

Grupo WeChat e QQ:

Grupo QQ: 533341697

Grupo WeChat: Adicione o GreatSQL Community Assistant (WeChat ID:) wanlidbccomo amigo e espere que o assistente da comunidade adicione você ao grupo.

Linus resolveu resolver o problema por conta própria para evitar que os desenvolvedores do kernel substituíssem tabulações por espaços. Seu pai é um dos poucos líderes que sabe escrever código, seu segundo filho é o diretor do departamento de tecnologia de código aberto e seu filho mais novo é um núcleo. contribuidor de código aberto Huawei: Demorou 1 ano para converter 5.000 aplicativos móveis comumente usados ​​A migração abrangente para Hongmeng Java é a linguagem mais propensa a vulnerabilidades de terceiros Wang Chenglu, o pai de Hongmeng: Hongmeng de código aberto é a única inovação arquitetônica. no campo de software básico na China. Ma Huateng e Zhou Hongyi apertam as mãos para "remover rancores". Ex-desenvolvedor da Microsoft: o desempenho do Windows 11 é "ridiculamente ruim" " Embora o que Laoxiangji seja de código aberto não seja o código, as razões por trás disso são muito emocionantes. Meta Llama 3 é lançado oficialmente. Google anuncia uma reestruturação em grande escala.
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/GreatSQL/blog/11054458
Recomendado
Clasificación