У меня есть таблица (MySQL), которая имеет 150 тыс. Строк. В течение дня есть несколько обновлений (1000 с), которые меняют значение int на другое значение int (поле набора обновлений таблицы =? где table.id =?). ничего сложного в запросе ОБНОВЛЕНИЯ.

Будет ли переход к чему-то вроде Mongo db быстрее? База данных получает 100 с (1000 с?) больше читает (выбирает), чем эти записи. Какие у меня варианты?

3 ответа3

1
  • Посмотрите на настройку MySQL для своей машины. Из коробки MySQL использует очень консервативные показатели памяти, поэтому он будет работать везде, каждый раз его нужно настраивать перед началом работы
  • Используйте инструменты анализа, такие как EXPLAIN, чтобы увидеть, сколько индексов попадает в запрос. Если вы можете уменьшить количество индексов, которые нужно изменить, это увеличит производительность вашего обновления
  • Есть способы перестроить или оптимизировать сами индексы

Перемещение базы данных может быть рассмотрено, но вы сначала хотите понять проблему и атаковать ваши легкие победы. Базы данных MySQL намного больше, чем у вас, которые работают комфортно, но вы не достигли предела самой технологии. Как и в случае большинства проблем с производительностью - хотя это не всегда самое лучшее решение, его обычно можно решить путем настройки или добавления кэша.

0

Вы не предоставили много контекста, поэтому трудно дать ответ, но некоторые мысли, которые, как я полагаю, объединены, должны дать вам ответ

  • Есть несколько оптимизаций, которые вы можете посмотреть на обновления. Помимо прочего, правильно ли проиндексированы ваши таблицы на table.id, и достаточно ли у вас памяти для эффективного выполнения ваших попыток? Вы используете "подготовленные" заявления? Оптимизация базы данных - массовая тема.

  • Mongo db не является реляционной базой данных, поэтому имеет смысл переписать ваш код, чтобы использовать Mongo, или вы можете добиться этого легче путем рефакторинга частей вашего кода (возможно, сохранение строки 150 КБ в виде массива в памяти и просто изменение этого массива Периодически копирую на диск хватит)

0

Предполагая, что вы оптимизировали свой запрос и правильно проиндексировали.

вы можете:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .