更新时间:2024-03-13 GMT+08:00

数据库读写性能提升

常见的排查点:

  1. 如果数据库有直接报错信息Timeout,需要检查实例的连接数是否已达到上限。
  2. 检查连接方式是否合理。
    • 检查方法:检查连接实例时,集群实例是否同时连接了多个dds mongos节点,副本集是否同时连接了主节点和备节点。
    • 解决方案:如果是集群实例,连接实例时建议同时连接多个dds mongos节点,这样可以分担负载并提高可用性;如果是副本集实例,建议同时连接主备节点,这样不仅提升了数据读写性能,而且避免了在发生主备节点切换后,从客户端写入数据报错的问题。
  3. 分析实例的监控指标是否存在异常。
    • 检查方法:通过查看监控指标,观察CPU使用率、内存使用率等使用情况。
    • 解决方案:如果CPU和内存指标异常,需要检查客户端业务或者实例数据是否过于集中,造成负载过高。客户端业务过于集中,则需要客户端进行架构优化。数据过于集中,则需要对数据进行必要的分片。
  4. 检查慢日志是否过多。

    检查方法:请参见查看慢日志

    解决方案:请参见慢操作优化

其他的注意点:

  • 执行查询时,只选择需要返回的字段,不需要的字段不要返回。修改数据时,只修改变化需要修改的字段,不要整个对象直接存储全部修改。从而减少网络和进程处理的负载。
  • 同一个业务场景,能一次查询返回的必须一次查询 ,减少和数据库的交互次数。
  • 单个实例中,数据库的总的个数不要超过200个,总的集合个数不要超过500个。
  • 业务上线前,一定要对数据库进行性能压测,评估业务峰值场景下,对数据库的负载情况。
  • 禁止同时执行大量并发事务,且长时间不提交。
  • 业务正式上线前,所有的查询类别,都应该先执行查询计划检查查询性能。
  • 检查实例规格的性能基线,分析当前的业务需求是否达到上限。