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 / 279193
Accepted
Yassine LD
Yassine LD
Asked: 2020-11-05 10:11:29 +0800 CST2020-11-05 10:11:29 +0800 CST 2020-11-05 10:11:29 +0800 CST

Quando uma tabela está bloqueada, mas SHOW PROCESSLIST não mostra nada

  • 772

Tivemos alguma lentidão em nossa aplicação. Quando verifiquei, descobri que uma tabela específica estava bloqueada para que todas as transações fossem rejeitadas pelo Lock wait timeout exceeded. Quando fiz SHOW PROCESSLIST;esperava ver alguns processos com Waiting for table level lockestado mas não mostra nada!? apenas algumas consultas INSERT/UPDATE na mesma tabela demorando exatamente 120 segundos antes do tempo limite e outros processos no estado de suspensão (veja a imagem):

insira a descrição da imagem aqui

innodb mariadb
  • 1 1 respostas
  • 762 Views

1 respostas

  • Voted
  1. Best Answer
    Yassine LD
    2020-11-05T10:11:29+08:002020-11-05T10:11:29+08:00

    A razão no meu caso foi que uma transação está fazendo um bloqueio de leitura em uma tabela específica levando a um " Lock wait timeout exceeded" porque não está confirmada. Portanto, todas as outras transações estão esperando para que essa tranx específica seja confirmada.

    Agora, por SHOW PROCESSLIST;que não mostrar nada? Na verdade, ele faz. você o encontrará (o processo) com um estado "Sleep" e sem nenhuma consulta mostrada na coluna de informações, como se fosse apenas uma conexão regular com o banco de dados.

    Vamos verificar meu exemplo na imagem:insira a descrição da imagem aqui

    Em Azul, essas são algumas consultas muito simples bloqueadas (levando 120 segundos antes de um tempo limite) e a vermelha é a transação "fantasma" ou não confirmada.

    Para ver esse tipo de transação executada:

    SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
    FROM INNODB_TRX
    

    E você pode matar o processo kill <id>;em que TRX_QUERYé null para liberar outras transações. No meu caso,KILL 33267342;

    Certifique-se de verificar a transação não confirmada para ver se uma commit;ou uma Rollbackcláusula está faltando para evitar esses problemas.

    • 1

relate perguntas

  • Qual é uma boa maneira de adicionar uma PRIMARY KEY a uma grande tabela InnoDB?

  • Como converter uma tabela de 66.862.521 linhas de MyISAM para InnoDB sem ficar offline por várias horas?

  • É prática comum misturar tabelas InnoDB e MyISAM no mesmo servidor?

  • Como posso alterar o mecanismo de armazenamento padrão no phpmyadmin?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

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