MySQL – массовое добавление записей (bulk insert)
30 Сен 2009
В MySQL существует синтаксис, позволяющий делать добавление множества записей одним SQL-запросом.
Т.е. например, вместо n запросов
1 2 3 4 5 6 7 |
insert into table_name (id, val) values(1,1); insert into table_name (id, val) values(1,2); insert into table_name (id, val) values(1,3); ........................................... insert into table_name (id, val) values(1,n); |
можно выполнить один запрос:
1 2 3 |
insert into table_name (id, val) values(1,1),(1,2),(1,3),…(1,n) |
Для таблиц типа MyISAM используется кэш, ускоряющий выполнение таких запросов.
Переменная bulk_insert_buffer_size устанавливает размер этого кэша.
По умолчанию – 8Мб. Установка bulk_insert_buffer_size в 0 отключит оптимизацию.
Если размер запроса превысит размер кэша, то Вы получите сообщение об ошибке.
Например, CodeIgniter выдал мне такое:
1 2 3 4 5 6 7 |
A Database Error Occurred Error Number: 2006 MySQL server has gone away |
Спасибо, помогло!
Не помогло увеличение bulk_insert_buffer_size.