Как точно настроить базу данных AWS R4 Aurora MySql
У меня есть база данных в настоящее время на 6,5 Гб, но быстро растет...
В настоящее время на сервере R4L Aurora, 15.25G Ram, 2-ядерный процессор
Я смотрю на покупку зарезервированного экземпляра, чтобы сократить расходы, но беспокоюсь о том, что если база данных будет быстро расти, например, достигнет более 15 ГБ в течение года, мне понадобится больший сервер.
99% данных - это история транзакций, эта таблица является самой большой на сегодняшний день. Он пишется очень часто, но после записи строки он не часто меняется (хотя иногда и меняется).
Так мало вопросов...
1) Стоит ли отключать кеш?
2) Я буду в порядке с 15G оперативной памяти, даже если сама база данных идет (скажем) 30G, или я буду видеть огромные проблемы со скоростью
3) База данных хорошо проиндексирована, но можно ли это улучшить? Например, если (скажем) 1 миллион записей принадлежит одному пользователю, есть ли способ разделить данные, чтобы предотвратить замедление доступа для других пользователей?
Спасибо
3 ответа
- "Должен ли я отключить кэш?" - Какой "кеш"?
- "Я увижу огромные проблемы со скоростью" - нам нужно видеть запросы и т. д.
- "База данных хорошо проиндексирована" - если это означает, что вы проиндексировали каждый столбец, значит, он плохо проиндексирован. Пожалуйста, покажите нам
SHOW CREATE TABLE
и несколько важных запросов. - "раздел" - за редким исключением, разделение не ускоряет работу таблиц MySQL. Опять же, нам нужны детали.
- "15.25G Ram" & "база данных...15G" - размер набора данных, как правило, больше или даже больше, чем ОЗУ. Таким образом, эта пара чисел не обязательно хороша для сравнения друг с другом.
- "1 миллион записей принадлежит одному пользователю" - опять детали, пожалуйста.
Память экземпляра просто вступает в игру, когда движок выбирает страницы в буферный пул на случай пропущенных страниц. Это не зависит от вашего фактического размера данных (за исключением, например, в крайних случаях, ваши записи действительно очень большие). Правило большого пальца заключается в том, чтобы вы всегда хранили рабочий буфер в пуле буферов и избегали сбрасывания страниц.
Если вашему приложению необходимо обработать большой объем данных, то идеальный способ сделать это - иметь выделенные реплики для запросов определенного типа. Таким образом, вы не будете менять действительные страницы в пользу новых запросов. Aurora теперь поддерживает пользовательские конечные точки, и это делает управление еще проще.
Если вам нужны более конкретные рекомендации, вам может потребоваться поделиться информацией о ваших данных, индексах, запросах и т. Д.
Вы должны статистически объяснить рост данных. Это можно сделать, запустив группу запросов count(*) по столбцу даты (года). Как только у вас будет количество записей в год, вы сможете понять, что происходит.
Теперь вы можете думать о возможных решениях
- Вы можете удалить данные, которые больше не актуальны с точки зрения истории, и сохранить хранилище ограниченным.
- Если имеется большой объем данных, например, Blob и т. Д., Возможно, вы можете сохранить его в S3 и сохранить ссылку в таблице базы данных.
- Удалите все ненужные таблицы. Иногда администратор базы данных создает временные таблицы резервных копий и оставляет их там после работы. Вы можете почистить такие столы.