2010-07-12 8 views
14

Esiste un modo tramite una query MySQL per ottenere le tabelle bloccate? Ho un'applicazione di threading C# in esecuzione e ci sono un sacco di tabelle bloccate nell'app.Ottieni tabelle bloccate nella query mysql

Ho bisogno di vedere le tabelle bloccate e analizzare il codice che potrebbe bloccarlo.

risposta

44

Usa:

SHOW OPEN TABLES 

un controllo se la colonna In_use è maggiore di 0. In questo caso, la tabella è bloccata.

Esempi

  • Elenco delle tabelle bloccate:

    show open tables WHERE In_use > 0

  • Verificare se la tabella tb_employees è bloccata o meno:

    show open tables WHERE Table LIKE 'tb_employees' AND In_use > 0

Dal official documentation:

In_use

il numero di blocchi di tabella o di blocco richieste ci sono per la tavola. Per esempio, se un cliente acquisisce un blocco per una tabella utilizzando LOCK TABLE t1 WRITE, In_use sarà 1. Se un altro problemi del cliente LOCK TABLE t1 WRITE mentre il tavolo rimane bloccato, il cliente bloccherà in attesa del bloccare, ma la richiesta di blocco causa In_use essere 2. Se il conteggio è zero, la tabella è aperta ma non attualmente in uso. In_use è anche aumentato dall'istruzione HANDLER ... OPEN e diminuito da HANDLER ... CLOSE.

+0

Grazie cristian, sembra perfetto. – Sharpeye500