Domanda

Ho un database MySQL con record di 21 m e sto cercando di eseguire un aggiornamento su circa 1 milione di record ma la query fallisce con ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

È possibile aggiornare la tabella senza acquisire blocchi?

Non ho accesso a modificare i parametri di configurazione MySQL come innodb_buffer_pool_size. C'è un modo diverso per raggiungere lo stesso?

Grazie

MODIFICARE:

  1. L'ho provato in lotti di 5000, funziona alcune volte, ma ottengo lo stesso errore
  2. Ho provato i tavoli di blocco per bloccare l'intero tavolo e ancora non funziona.
È stato utile?

Soluzione

Penso che puoi usare la clausola limite per eseguire gli aggiornamenti nei lotti.

Altri suggerimenti

Prova a bloccare a livello di tabella anziché a livello di riga. Uso LOCK TABLES MyTable WRITE. Questo potrebbe risolvere il problema. Nessuna garanzia però! Non dimenticare di sbloccare neanche i tavoli!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top