Сократите использование памяти в Google Cloud SQL - PullRequest
0 голосов
/ 13 декабря 2018

У нас есть простая база данных MySQL с несколькими таблицами, управляемая Google Cloud SQL.База данных имеет несколько сотен миллионов строк и довольно легкое чтение / запись.Мы не приближаемся к пределам для хранилища, но использование памяти растет линейно с хранилищем и скоро станет проблемой для масштабируемости.

Должно ли использование памяти расти линейно с хранилищем?Что мы должны рассмотреть, чтобы уменьшить использование памяти?Мы не настраивали флаги базы данных.

Я не вижу никакой информации об использовании памяти и передовых методах в документации по Google Cloud.Нам кажется слишком рано думать о горизонтальном масштабировании / разбиении.

1 Ответ

0 голосов
/ 13 декабря 2018

MySQL автоматически выделит около 0,8 памяти экземпляра для хранения данных и индексов.Это сделано для того, чтобы избежать тяжелых операций ввода-вывода и обеспечить хорошее время отклика.

Таким образом, по умолчанию MySQL будет надеяться сохранить в памяти как можно больше, в результате чего использование памяти будет выглядеть линейно масштабируемым при добавлении большего количества данных.

Это не обязательно означает, что вы близки к решению проблем.Это действительно вопрос того, какие ресурсы есть у вашей машины MySQL.Предоставьте ему 128 ГБ ОЗУ и вставьте данные объемом ~ 120 ГБ, и он будет хранить ~ 102 ГБ данных в памяти (поддерживая производительность), в то время как машина с 64 ГБ ОЗУ и данными объемом 120 ГБ наверняка покажет более медленное время отклика.

Дополнительное примечание:

Если вы храните сотни миллионов строк и хотите немного скомпрометировать время запроса (от миллисекунд до секунд), я бы посоветовал проверить BigQuery, вы можете в конечном итогеплатить меньше, чем Cloud SQL, не беспокоясь о масштабах (когда-либо ..) и обслуживании DBA / Dev Ops (память, процессор, индексирование и т. д.).

...