DBAtlas · Atlas d'exploitation des bases de données

1197: Multi-statement transaction required more than 'max_binlog_cache_size' (la transaction multi-instructions a nécessité plus que 'max_binlog_cache_size')

MySQL

Que signifie cette erreur ?

Les données de binlog générées par une seule transaction ont dépassé la limite de mémoire/cache définie par max_binlog_cache_size. La transaction ne tenait pas dans le binary log, elle a donc échoué et a été annulée.

Cause

Une très grosse transaction (un seul INSERT/UPDATE/DELETE de millions de lignes ou un énorme chargement en masse) a rempli le cache du binlog. Avec la journalisation binaire activée (réplication/restauration à un instant donné), les grosses transactions peuvent facilement dépasser cette limite.

Comment la corriger

Découpez la grosse transaction en lots plus petits ; faites un COMMIT après chaque lot. Si de très grosses transactions sont inévitables, augmentez max_binlog_cache_size (et binlog_cache_size si nécessaire). Dans les chargements ETL/en masse, un chargement par blocs avec des COMMIT intermédiaires évite à la fois cette erreur et les verrous détenus longtemps.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur