Задать вопрос

Сколько оперативки нужно для mysql при размере таблицы 2гб?

Есть база данных для сайта. В ней одна таблица - 5млн строк, 2гб размер.
Изначально это все крутилось на vps с 1гб памяти. Потом начал дорабатывать функционал, и понял, что любое изменение схемы таблицы или тяжелые запросы намертво вешали БД

Сейчас поменял сервер на 4гб оперативы и 2 cpu.
Я правильно понимаю, чтобы все крутилось быстро, нужно чтобы таблица помещалась в оперативку с запасом?
Либо нужно что то дотюнить в настройках mysql?

Mysql 5.7.22 Таблица innodb
  • Вопрос задан
  • 5048 просмотров
Подписаться 7 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 5
Однозначно дать ответ сколько необходимо оперативки не получится.
Т.к. всё зависит от того, как вы работает с данными.

Есть ли у вас есть большое кол-во не лимитрованных выборок?

Возможно, вам необходимо сделать рефакторинг кода:
- лимитировать выборки по кол-ву записей
- лимитировать выборку только необходимыми данными
- добавить кеширование
Ответ написан
Комментировать
@lubezniy
Здесь важно, чтобы в память помещались индексы. Ну и настройки MySQL надо выставить так, чтобы выделяемой памяти под них хватало. Ещё неплохо бы SSD, если записи мало: с ним производительность взлетает.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Я правильно понимаю, чтобы все крутилось быстро, нужно чтобы таблица помещалась в оперативку с запасом?

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

Но чтобы работать нормально, систему надо настраивать. При этом
изменение схемы таблицы

Это одна проблема, со своими решениями, а
тяжелые запросы

-- СОВСЕМ другая, со совсем другими решениями

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

С "тяжелыми" запросами надо разбираться по отдельности.
Ответ написан
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Я правильно понимаю, чтобы все крутилось быстро, нужно чтобы таблица помещалась в оперативку с запасом?
Либо нужно что то дотюнить в настройках mysql?

надо тюнить запросы, работать со структурой. делать индексы, кэшированием заняться. Можно конечно наращивать мощность до бесконечности, но если Вы не рационально используете базу, это будет бесконечным процессом. Ищите узкие места, ресурсоемкие запросы, думайте как оптимизировать. Для каждого случая - свой оптимальный метод. Иногда это наращивание озу, но это последняя мера. Прежде есть куча других.
Ответ написан
riky
@riky
Laravel
добавление оперативки однозначно поможет с SELECT запросами. Но мало добавить оперативку, нужно еще править конфиг mysql, чтобы эта оперативка могла в принципе использоваться, по умолчанию сразу не будет.
В случае же изменения схемы всё как правило упирается в диск. Т.к. все операции с БД должны происходить атомарно (то есть или должны быть произведены полностью или не произведены вообще). Если посередине процесса отключится питание или процесс кто-то убьет недождавшись - таблицы должны сохранится в том виде что было до изменения.
Это очень сложный процесс, и как я говорил упирается больше в диск. Поможет замена hdd на ssd.
Можно делать копию базы (или только одной нужной таблицы) и меняйте схему, потом переименовывайте. Но если в базу идет и запись то просто тоже не получится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы