DBAtlas · Атлас эксплуатации баз данных

1197: Multi-statement transaction required more than 'max_binlog_cache_size'

MySQL

Что это значит?

Данные binlog, созданные одной транзакцией, превысили лимит памяти/кеша, заданный max_binlog_cache_size. Транзакция не поместилась в двоичный журнал, поэтому завершилась ошибкой и была откачена.

Почему возникает?

Очень большая транзакция (один INSERT/UPDATE/DELETE миллионов строк или огромная массовая загрузка) заполнила кеш binlog. При включённом двоичном журналировании (репликация/восстановление на момент времени) большие транзакции легко превышают этот лимит.

Как исправить

Разбейте большую транзакцию на меньшие пакеты; выполняйте COMMIT после каждого пакета. Если действительно больших транзакций не избежать, увеличьте max_binlog_cache_size (и при необходимости binlog_cache_size). В ETL/массовых загрузках загрузка частями с промежуточными COMMIT предотвращает и эту ошибку, и длительно удерживаемые блокировки.

Открыть в DBAtlas →

Ещё по этой СУБД