项目一直在使用mongodb云数据库,最近发现数据库周期性的隔两天崩一次。客服人员一直告诉我们数据库存在大量的慢查询,一直在积压,所以导致数据库一部分业务表死锁了。
搜索发现,MongoDB的慢查询都村在表文件中。使用db.system.profile可以查询到。

db.system.profile.find({'millis':{$gt:2},'ts':{$gt:new ISODate('2020-06-11 06:35:26.583Z')}}).sort({'millis':-1})

在这里插入图片描述
从表中能看到慢查询的一些信息,我们可以根据这些信息对业务或者sql进行相应的优化。
字段说明:
millis:sql耗时。
ns:表。
query:查询条件。
client:请求客户端IP。

慢查询的优化方式:
所有数据库查询优化基本上都是一样,

  1. 建立索引。
  2. 查询自己用到的字段。
  3. 减少聚合函数。
    总之就是想尽一切办法减少sql扫描的记录数。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐