减少 Google Cloud SQL 中的内存使用
Reduce memory usage in Google Cloud SQL
我们有一个简单的 MySQL 数据库,其中包含一些表,由 Google 云 SQL 管理。该数据库有几亿行,而且相当轻reading/writing。我们离存储的极限还差得很远,但内存使用量随着存储量呈线性增长,很快就会成为可扩展性的问题。
内存使用量是否应随存储量线性上升?我们应该考虑什么来降低我们的内存使用量?我们还没有自定义任何数据库标志。
我在 Google 云文档中没有看到任何关于内存使用和最佳实践的信息。现在考虑横向 scaling/sharding.
似乎还为时过早
MySQL 将自动分配大约 0.8 的实例内存来存储数据和索引。这是为了避免繁重的 I/O 操作并提供良好的响应时间。
因此,默认情况下,MySQL 希望在内存中存储尽可能多的数据 - 导致内存使用量看起来随着插入更多数据而线性扩展。
这并不一定意味着您即将面临问题。这实际上是您的 MySQL 机器拥有哪些资源的问题。给它 128GB 的 RAM 并插入 ~ 120GB 的数据,它将在内存中保存 ~ 102GB 的数据(保持性能),而具有 120GB 的数据的 64GB RAM 机器肯定会显示较慢的响应时间。
旁注:
如果您存储数亿行并且愿意在查询时间(毫秒到秒)上做出一点妥协,我建议您检查一下 BigQuery,您最终支付的费用可能会低于 Cloud SQL,而不是担心规模(永远..)或 DBA / Dev Ops 维护(内存,CPU,索引等..)。
我们有一个简单的 MySQL 数据库,其中包含一些表,由 Google 云 SQL 管理。该数据库有几亿行,而且相当轻reading/writing。我们离存储的极限还差得很远,但内存使用量随着存储量呈线性增长,很快就会成为可扩展性的问题。
内存使用量是否应随存储量线性上升?我们应该考虑什么来降低我们的内存使用量?我们还没有自定义任何数据库标志。
我在 Google 云文档中没有看到任何关于内存使用和最佳实践的信息。现在考虑横向 scaling/sharding.
似乎还为时过早MySQL 将自动分配大约 0.8 的实例内存来存储数据和索引。这是为了避免繁重的 I/O 操作并提供良好的响应时间。
因此,默认情况下,MySQL 希望在内存中存储尽可能多的数据 - 导致内存使用量看起来随着插入更多数据而线性扩展。
这并不一定意味着您即将面临问题。这实际上是您的 MySQL 机器拥有哪些资源的问题。给它 128GB 的 RAM 并插入 ~ 120GB 的数据,它将在内存中保存 ~ 102GB 的数据(保持性能),而具有 120GB 的数据的 64GB RAM 机器肯定会显示较慢的响应时间。
旁注:
如果您存储数亿行并且愿意在查询时间(毫秒到秒)上做出一点妥协,我建议您检查一下 BigQuery,您最终支付的费用可能会低于 Cloud SQL,而不是担心规模(永远..)或 DBA / Dev Ops 维护(内存,CPU,索引等..)。