[MySql] Перенос БД максимально в память
От: Буравчик Россия  
Дата: 12.10.18 09:07
Оценка:
Как оптимизировать MySql, чтобы как можно больше данных держалось в памяти и как можно реже писалось на диск?
На какие настройки посмотреть?

База тестовая, данные не критичны, легко переносится их полное уничтожение. Можно вообще никогда ничего не записывать на диск.

Провел тест. Создание схемы БД, затем 100 повтор следующей операции: очистка базы, добавление 10 строк (разом), запрос количества записей, запрос всех записей,

Время работы теста на разных базах:
— Sqlite на диске = 32.0 сек
— Sqlite в /dev/shm = 6.0 сек
— MySql на диске = 9.5 cек

Хочу, чтобы время MySql в памяти было сравнимо с sqlite в памяти. Возможно?
Перенос файлов базы на tmpfs не очень интересно, хочется именно тюнинг сделать.
Best regards, Буравчик
Re: [MySql] Перенос БД максимально в память
От: BlackEric http://black-eric.lj.ru
Дата: 12.10.18 09:31
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Как оптимизировать MySql, чтобы как можно больше данных держалось в памяти и как можно реже писалось на диск?

Б>На какие настройки посмотреть?

Б>Хочу, чтобы время MySql в памяти было сравнимо с sqlite в памяти. Возможно?

Б>Перенос файлов базы на tmpfs не очень интересно, хочется именно тюнинг сделать.

The MEMORY Storage Engine
https://github.com/BlackEric001
Re[2]: [MySql] Перенос БД максимально в память
От: Буравчик Россия  
Дата: 12.10.18 10:05
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>The MEMORY Storage Engine


Если я правильно понимаю, это задается при описании схемы. А схему БД менять очень не хочется. Нужно, чтобы она соответствовала схеме на production
Best regards, Буравчик
Re: [MySql] Перенос БД максимально в память
От: Буравчик Россия  
Дата: 12.10.18 10:21
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Время работы теста на разных базах:

Б>- Sqlite на диске = 32.0 сек
Б>- Sqlite в /dev/shm = 6.0 сек
Б>- MySql на диске = 9.5 cек

Настройка innodb_flush_log_at_trx_commit = 0 снизила время до 6.5 сек, что, в целом, ок.
Вроде, опция позволяет скидывать лог и данные на диск раз в секунду, а не после каждой транзакции.

А как в MySql задавать опции для конкретной БД, а не для всего сервера в целом?
Best regards, Буравчик
Re: [MySql] Перенос БД максимально в память
От: holala  
Дата: 12.10.18 10:24
Оценка:
для старта поставь percona
потом выдели кэшу много памяти
файлы БД — на ссд
посмотри результаты, должно помочь
Re[2]: [MySql] Перенос БД максимально в память
От: Буравчик Россия  
Дата: 12.10.18 10:35
Оценка:
Здравствуйте, holala, Вы писали:

H>для старта поставь percona

H>потом выдели кэшу много памяти
H>файлы БД — на ссд
H>посмотри результаты, должно помочь

Спасибо. Но...

Размер базы 10Мб макс, кэш по-умолчанию сильно больше
Файлы БД уже на SSD

Про percona почитаю, но думаю это не тот случай
Best regards, Буравчик
Re: [MySql] Перенос БД максимально в память
От: MozgC США http://nightcoder.livejournal.com
Дата: 12.10.18 13:55
Оценка:
Еще вариант попробовать сделать RAM диск и базу на него деплоить вначале тестов.
Re[3]: [MySql] Перенос БД максимально в память
От: wildwind Россия  
Дата: 12.10.18 15:03
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Если я правильно понимаю, это задается при описании схемы. А схему БД менять очень не хочется. Нужно, чтобы она соответствовала схеме на production


Если не секрет, какова цель всех этих манипуляций, если production все равно другой?
Re[4]: [MySql] Перенос БД максимально в память
От: Буравчик Россия  
Дата: 12.10.18 15:39
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Если не секрет, какова цель всех этих манипуляций, если production все равно другой?


Быстрое выполнение большого количества юнит (и прочих) тестов на рабочей машине.
Поэтому схема должна быть ровно такой же как на production. И работать максимально быстро (в ущерб надежности).
Best regards, Буравчик
Re[5]: [MySql] Перенос БД максимально в память
От: BlackEric http://black-eric.lj.ru
Дата: 12.10.18 16:03
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Быстрое выполнение большого количества юнит (и прочих) тестов на рабочей машине.

Б>Поэтому схема должна быть ровно такой же как на production. И работать максимально быстро (в ущерб надежности).

Тогда RAM диск пробуйте.
https://github.com/BlackEric001
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.