Назад | Перейти на главную страницу

Ускорение MySQL для вставок (в целях тестирования)

У меня есть программное обеспечение, которое должно делать много вставок. В производственной среде будут серьезные настройки, тестирования и тому подобное, но теперь, когда мне нужно это протестировать, я хотел бы максимально ускорить вставки. Отсюда мой вопрос - есть ли способ настроить mysql так, чтобы он не выполнял много операций ввода-вывода с диска, но сохранял все в ОЗУ и редко синхронизировался с диском (например, один раз за n секунд?)

См. Ответ руководства MySQL Вот. Чтобы ответить на ваш конкретный вопрос, ознакомьтесь с INSERT DELAYED который делает именно то, что вы хотите. Вы можете настроить его поведение с помощью delayed_insert_limit и delayed_queue_size.

Однако если вы можете группировать INSERT, это может быть еще быстрее; либо используйте инструмент объемной вставки, либо укажите несколько списков ЗНАЧЕНИЙ, например: INSERT INTO table (column) VALUES (val1),(val2),(val3)

Отложенная вставка может помочь (только MyISAM), потому что она позволяет вставлять большими партиями (для чего подходит MyISAM).
Также поможет разделение вашего стола.

Если ваша память позволяет (и это то, о чем вы просите), вы можете использовать таблицу памяти. Просто убедитесь, что настроек max_heap_table_size и tmp_table_size достаточно для данных.

Еще немного обмана, может быть (в Linux) использовать TMPFS и разместить там файл данных (с помощью Symlinks)

как Даниэль говорит во второй части своего ответа - пакетные вставки дадут вам много. чек этот презентация. ваш масштаб, вероятно, намного меньше, но я думаю, вам все равно будет интересно.