В дев режиме не составит труда увеличить производительность MySQL в пять раз. Все что нужно сделать - переместить базы данных в оперативную память. К примеру, в моем последнем проекте билд выполнялся за 5 минут. А после перемещения баз в оперативку - всего за 50-55 секунд.
В общем, как сделать по шагам:
1. Копируем базы данных во временное хранилище:
На Винде также можно сделать подобное, существуют утилиты для создания разделов в оперативной памяти.
З.Ы. Спасибо, Жене Афоничеву. Идея принадлежит ему.
В общем, как сделать по шагам:
1. Копируем базы данных во временное хранилище:
sudo cp /var/lib/mysql /var/lib/mysql.tmp -R2. Создаем скриптик такого содержания:#!/bin/bash
set -e
cd /var/lib
mount tmpfs mysql -t tmpfs -o size=300M
cp mysql.tmp/* mysql -r
chown mysql:mysql -R mysql
/etc/init.d/mysql restart
Я назвал его mysqltomemory. "size=300M" - тут указываем необходимый размер раздела под базы.
3. Ложим скрипт в /usr/bin и помечаем как исполнимый.
4. Запускаем скрипт от имени рута.
Все, базы теперь находятся в оперативке. Недостаток - изменения, конечно же не сохранятся при перезагрузке. Поэтому мне нужно каждый раз после перезагрузки запустить скрипт и перебилдить проект.
На Винде также можно сделать подобное, существуют утилиты для создания разделов в оперативной памяти.
Да надеюсь, что всем понятно, что не стоит такого делать на продакшене :-)
З.Ы. Спасибо, Жене Афоничеву. Идея принадлежит ему.
ага, надежность такого решения в минусе, но для девелопер развлечений и быстроты конечно имеет право жить на рабочих ноутах)
ОтветитьУдалитьМне это позволяет полчаса а то и больше в день экономить. За день я несколько раз собираю проект.
ОтветитьУдалитьоффтоп
ОтветитьУдалитьУважаемый Артём, сор за менторский тон, но не "ложим", а кладем