MongoDB的慢SQL日志是记录到业务库的system.profile表里,当线上DB运行缓慢时,开发一般联系DBA去排查问题,那么能够将这种机械化的工做,作成一个平台化、可视化的工具出来,让开发在网页里点点鼠标便可查看数据库运行情况,这将大大提升工做效率,下降对DBA的依赖。php
参考了Percona pt-mongodb-query-digest工具抓取分析的展现思路,并用PHP重构,将分析结果插入MySQL表里,用前端页面展示出来,方便开发定位问题。前端
每次抓取最近的1000条超过1秒的慢SQL记录入库。mysql
执行git
php check_mongo_slowsql.php
至关于执行:github
db.getSiblingDB("samples").system.profile.find({millis:{$gte:2000}}, {millis:1,ns:1,query:1,ts:1,client:1,user:1}).sort({ts:-1}).limit(1000)
采用远程链接方式获取慢SQL,因此无须要在数据库服务器端部署相关agent或计划任务。sql
首页汇总了生产业务库31天内的慢SQL集合。mongodb
点击《选择数据库标签》能够查看具体的业务库慢SQL趋势走向。数据库
点击抽象语句栏目的✚号,会弹出一个新链接,展现慢SQL的来源用户名,IP,集合的大小,集合的索引信息,以及SQL的Explain执行计划。服务器
Github地址:https://github.com/hcymysql/mongo_slowqueryapp