我们有一个简单的MySQL数据库,其中包含一些表,由Google Cloud SQL管理。该数据库有几亿行,并且读/写操作相当轻松。我们还远远没有达到存储的极限,但是内存的使用随着存储的增长呈线性增长,并且很快就会成为可扩展性的问题。
内存使用量是否应随存储量线性增加?我们应该考虑怎样降低内存使用量?我们尚未自定义任何数据库标志。
我没有在Google Cloud文档中看到有关内存使用情况和最佳做法的任何信息。对于我们而言,考虑水平缩放/分片似乎为时尚早。
答案 0 :(得分:3)
MySQL将自动分配约0.8的实例内存来存储数据和索引。这是为了避免繁重的I / O操作并提供良好的响应时间。
因此,默认情况下,MySQL将希望在内存中存储尽可能多的内存-导致内存使用情况看起来随着插入更多数据而线性扩展。
这并不一定意味着您即将面临问题。实际上,这与MySQL机器拥有的资源有关。给它128GB的RAM并插入约120GB的数据,它将在内存中保存约102GB的数据(保持性能),而拥有120GB数据的64GB RAM机器肯定会显示较慢的响应时间。
旁注:
如果您存储亿万行并且愿意在查询时间(毫秒到秒)之间做出一些折衷,那么我建议您检查一下BigQuery,您可能最终会比Cloud SQL少付钱,而不用担心规模。 。)或DBA / Dev Ops维护(内存,CPU,索引等)。