воскресенье, 9 октября 2011 г.

Как увеличить производительность MySQL в 5 раз

В дев режиме не составит труда увеличить производительность MySQL в пять раз. Все что нужно сделать - переместить базы данных в оперативную память. К примеру, в моем последнем проекте билд выполнялся за 5 минут. А после перемещения баз в оперативку - всего за 50-55 секунд. 


В общем, как сделать по шагам:


1. Копируем базы данных во временное хранилище:
 sudo cp /var/lib/mysql /var/lib/mysql.tmp -R
2. Создаем скриптик такого содержания:#!/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. Запускаем скрипт от имени рута.

Все, базы теперь находятся в оперативке. Недостаток - изменения, конечно же не сохранятся при перезагрузке. Поэтому мне нужно каждый раз после перезагрузки запустить скрипт и перебилдить проект.

На Винде также можно сделать подобное, существуют утилиты для создания разделов в оперативной памяти.

Да надеюсь, что всем понятно, что не стоит такого делать на продакшене :-)


З.Ы. Спасибо, Жене Афоничеву. Идея принадлежит ему.

3 комментария:

  1. Анонимный09.10.2011, 19:13

    ага, надежность такого решения в минусе, но для девелопер развлечений и быстроты конечно имеет право жить на рабочих ноутах)

    ОтветитьУдалить
  2. Мне это позволяет полчаса а то и больше в день экономить. За день я несколько раз собираю проект.

    ОтветитьУдалить
  3. оффтоп
    Уважаемый Артём, сор за менторский тон, но не "ложим", а кладем

    ОтветитьУдалить