1、概述
不管是在关系型还是非关系型数据库中,查询语句的优化在数据库的的优化中占了很大比例。在Oracle中,通过性能视图,可以获取TOPSQL,而在Mysql、PG、Mongodb这些稍小型的数据库中,均只能通过设置慢查询阈值的方式,获取慢SQL。在Mysql中,慢日志有独立的慢日志文件,而PG和Mongo中慢日志都是输出到数据库的运行日志里面。在Mongodb中,数据库在输出慢日志的同时会显示语句执行时的执行计划。
[ 2、慢日志配置 ]Mongodb慢日志通过如下参数设置:
operationProfiling:
mode: slowOp --表示抓取慢查询
slowOpThresholdMs: 200 --抓取执行时间超过200ms的查询
也可以在实例启动后,在数据库层动态的设置慢查询阈值db.setProfilingLevel(1,{ slowms: 200 })。
设置之后,在当前数据库中会产生一个名为system.profile的集合,该集合是一个capped集合,固定大小为1MB,当超过1MB后,会自动覆盖旧数据。使用showprofile可以显示最近的5条慢查询记录以及语句的执行计划。
同时,在配置了慢查询阈值后,mongodb会在运行日志中打印出慢日志,如下: |