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

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

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

решение1

Вставка с отложенной записью может помочь (только MyISAM), поскольку она позволяет вставлять данные в больших объемах (для чего и хорош MyISAM).
Разделение таблицы также поможет.

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

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

решение2

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

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

решение3

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

Связанный контент