БД в оперативную память, стоит ли?

12 3
htexture
На сайте с 29.05.2017
Offline
213
1185

Смотрю на сервера, у каждого более 400 дней аптайма, все стабильно до ужаса, аж непривычно. И тут пришла идея, когда-то давно читал статью про БД в оперативную память. Хорошая ли идея? Кто использует подобное? Готов пожертвовать данными в пользу скорости. На серверах обычно от 64 гб до 128 гб, в среднем база весит от 1 до 10 гб.

S3
На сайте с 29.03.2012
Offline
337
#1
Если ты имеешь ввиду буфферизацию, то достаточно увеличить размер буфера, но не более 40% от всей. Если ты хочешь вообще работать с базой в памяти , то дорога в noSQL. Например MongoDB
LEOnidUKG
На сайте с 25.11.2006
Offline
1761
#2
htexture :
Хорошая ли идея?

О какой БД идёт речь?

Если он MySQL, то БД и таблицы в формате InnoDB и так будут лежать и в ОЗУ.

Если про Sqlite, то создайте виртуальный диск в ОЗУ и туда положите файлы и работайте с ними.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
htexture
На сайте с 29.05.2017
Offline
213
#3
LEOnidUKG #:
Если он MySQL, то БД и таблицы в формате InnoDB и так будут лежать и в ОЗУ.

Ну не знаю, по ощущениям, жесткий напрягается при чтении бд и записи, хочется полностю увести его в виртуализацию на оперативку.

htexture
На сайте с 29.05.2017
Offline
213
#4
Sly32 #:
Если ты имеешь ввиду буфферизацию, то достаточно увеличить размер буфера, но не более 40% от всей. Если ты хочешь вообще работать с базой в памяти , то дорога в noSQL. Например MongoDB

Спасибо, почитаю. Увеличивал буферизацию, но хдд использование растет пропорционально народу на сайте. Сервер исключительно с базой данных работает. 

S3
На сайте с 29.03.2012
Offline
337
#5
htexture #:
Увеличивал буферизацию, но хдд использование растет пропорционально народу на сайте. Сервер исключительно с базой данных работает. 

Это нормально, не все операции работают  в памяти. Ну и надо смотреть особенности мускли, я давно от нее отказался, постгрес лучше. Я говорю исходя из моего опыта,  буфферизация отличается в разных реляционных базах.

htexture
На сайте с 29.05.2017
Offline
213
#6
Sly32 #:

Это нормально, не все операции работают  в памяти. Ну и надо смотреть особенности мускли, я давно от нее отказался, постгрес лучше. Я говорю исходя из моего опыта,  буфферизация отличается в разных реляционных базах.

И вот я возвращаюсь к идеи полностью переместить ее в оперативку. Просто как правильно и сколько можно вырезать из условных 64 гб, когда база весит 10 гб + запас который нужен для работы самого мускул, кеш и прочее. Отсюда думать, как быстро написать скрипты, которые будут быстро копировать нужные конфиги, пути, файлы, чтобы быстро развернуть после возможного отключения сервера, что опять по аптайму показывает возможно и не понадобится.

L
На сайте с 10.02.2015
Offline
244
#7
htexture #:

но хдд использование растет пропорционально народу на сайте

Может пересесть на ssd?

Что грузит hdd?

Насколько забит канал?

Оно-то бы часто используемые файлы и так закешировало в ОЗУ (это если грузит что-то помимо базы).

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

V1
На сайте с 14.03.2007
Offline
162
#8
htexture #:

И вот я возвращаюсь к идеи полностью переместить ее в оперативку. Просто как правильно и сколько можно вырезать из условных 64 гб, когда база весит 10 гб + запас который нужен для работы самого мускул, кеш и прочее. Отсюда думать, как быстро написать скрипты, которые будут быстро копировать нужные конфиги, пути, файлы, чтобы быстро развернуть после возможного отключения сервера, что опять по аптайму показывает возможно и не понадобится.

А Redis не подходит для этого?

Cpt.Smollet
На сайте с 03.08.2024
Offline
5
#9
htexture #:
Увеличивал буферизацию, но хдд использование растет пропорционально народу на сайте.

Помимо размера буфера ( innodb_buffer_pool_size ) и размера буфера журнала ( innodb_log_buffer_size ), есть еще несколько параметров, влияющих на нагрузку на хдд.
Ими тоже можно поэкспериметировать.
Например:  innodb_flush_log_at_trx_commit,   innodb_flush_method,  innodb_flush_neighbors,  innodb_flush_neighbors_pages  и подобные.

K4
На сайте с 29.01.2020
Online
71
#10
Sly32 #:

Это нормально, не все операции работают  в памяти. Ну и надо смотреть особенности мускли, я давно от нее отказался, постгрес лучше. Я говорю исходя из моего опыта,  буфферизация отличается в разных реляционных базах.

У Microsoft проще, MS SQL Server достаточно агрессивно использует кэширование, если есть свободная память  - все съест, но это явно плюс, веб-приложения поражают своей производительностью. 

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий