我们有一个简单的mysql数据库和一些表,由googlecloudsql管理。数据库有几亿行,读写相当轻松。我们还远远没有达到存储的极限,但是内存使用率随着存储量的增加而线性上升,很快就会成为可伸缩性的一个问题。
内存使用率是否应该随存储量线性增长?我们应该考虑什么来降低我们的内存使用率?我们还没有自定义任何数据库标志。
我在googlecloud文档中没有看到任何关于内存使用和最佳实践的信息。现在考虑水平缩放/切分似乎还为时过早。
我们有一个简单的mysql数据库和一些表,由googlecloudsql管理。数据库有几亿行,读写相当轻松。我们还远远没有达到存储的极限,但是内存使用率随着存储量的增加而线性上升,很快就会成为可伸缩性的一个问题。
内存使用率是否应该随存储量线性增长?我们应该考虑什么来降低我们的内存使用率?我们还没有自定义任何数据库标志。
我在googlecloud文档中没有看到任何关于内存使用和最佳实践的信息。现在考虑水平缩放/切分似乎还为时过早。
1条答案
按热度按时间s4n0splo1#
mysql将自动分配大约0.8%的示例内存来存储数据和索引。这是为了避免繁重的i/o操作并提供良好的响应时间。
因此,默认情况下,mysql希望在内存中存储尽可能多的数据,从而使内存使用量看起来像是随着插入更多数据而线性扩展。
这并不一定意味着你就要面对问题了。这实际上是mysql机器拥有什么资源的问题。给它128gb的ram并插入120gb的数据,它将在内存中保存102gb的数据(保持性能),而64gb的ram机器和120gb的数据肯定会显示较慢的响应时间。
旁注:
如果您存储了数亿行,并且愿意在查询时间(毫秒到秒)上妥协一点,我建议您 checkout bigquery,您最终的代价可能比cloud sql低,而不必担心规模(ever..)或dba/dev ops维护(内存、cpu、索引等)。