Question

J'ai une base de données MySQL avec 21M d'enregistrements et j'essaye de faire une mise à jour sur environ 1M d'enregistrements mais la requête échoue avec ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

Est-il possible de mettre à jour la table sans acquérir de verrous?

Je n'ai pas accès pour modifier les paramètres de configuration MySQL tels que innodb_buffer_pool_size.Y a-t-il une manière différente d'atteindre la même chose?

Merci

MODIFIER :

  1. Je l'ai essayé par lots de 5000, cela fonctionne plusieurs fois, mais j'obtiens la même erreur
  2. J'ai essayé LOCK TABLES pour verrouiller la table entière et cela ne fonctionne toujours pas.
Était-ce utile?

La solution

Je pense que vous pouvez utiliser la clause limit pour effectuer les mises à jour par lots.

Autres conseils

Essayez de verrouiller au niveau de la table plutôt qu'au niveau de la ligne.Utilisez LOCK TABLES MyTable WRITE.Cela pourrait résoudre le problème.Aucune garantie cependant!N'oubliez pas non plus de déverrouiller les tables!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top