Aggiorna la query in mysql su tavolo grande
-
28-10-2019 - |
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:
- L'ho provato in lotti di 5000, funziona alcune volte, ma ottengo lo stesso errore
- Ho provato i tavoli di blocco per bloccare l'intero tavolo e ancora non funziona.
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!