- Mais recentes
- Mais votos
- Mais comentários
【以下的回答经过翻译处理】 理想情况下,磁盘读取速度比内存慢。索引页面根据运行在数据库上的查询进行分页并存储在内存中。当您首次启动集群时,其缓冲区缓存为空,随着您的工作负载针对数据库进行查询,它将填充页面。如果索引大小大于内存量(索引无法放入内存中),则数据库必须清除并从磁盘中读取以迭代索引(数据页也是如此)。理想情况下,您希望实例的RAM足够大,以便数据页和索引页面都能放入内存中。
“在查找缓冲区中的数据之前,数据库是否仍然必须处理查询?”:
查询仍需要处理(查询计划),但结果的获取取决于页面的位置(内存 vs 存储),查询的处理方式取决于查询的结构和类型。
通常,缓冲区缓存命中率的值应尽可能高(接近100%),因为从工作集内存中读取数据比从存储卷中读取数据更快且更具成本效益。如果您的索引无法放入内存中,您将看到较低的BufferCacheHitRatio。连续从磁盘读取会产生额外的I/O成本,不如从内存中读取效果好。您可以监视VolumeReadIOPS来确定磁盘是否被更多地使用。
一个重要的规则是,如果您注意到磁盘IOPS增加+成本增加+BufferCacheHitRatio和IndexBufferCacheHitRatio减少,那么您最好不要使用缓冲区。
由于CPU使用率较高且BufferCacheHitRatio未降至99.99%以下,为了确定是否是查询导致了CPU增加,我建议在集群上启用性能洞察[1],这将使您能够监视查询所使用的虚拟CPU。分析器日志还将有助于确定查询的执行时间[2]。我还添加了[3],将有助于确定CPU增加的根本原因。
参考: [1] Performance insights Documentdb: https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights.html
[2] Profiling Documentdb: https://docs.aws.amazon.com/documentdb/latest/developerguide/profiling.html
[3] Determining high CPU documentdb: https://docs.amazonaws.cn/en_us/documentdb/latest/developerguide/user_diagnostics.html#user_diagnostics-cpu_utilization
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há 3 anos
- Como solucionar problemas e resolver a utilização elevada da CPU em instâncias do Amazon DocumentDB?AWS OFICIALAtualizada há 9 meses