温馨提示×

Node.js日志中如何查找慢查询

小樊
41
2025-12-07 08:47:59
栏目: 编程语言

在Node.js中,要查找慢查询,通常需要使用一些第三方库来帮助监控和记录数据库查询的性能。这里以两个流行的数据库(MongoDB和MySQL)为例,介绍如何在Node.js中查找慢查询。

  1. MongoDB

要在Node.js中使用MongoDB,你需要安装mongodbmongoose库。这里以mongoose为例。

首先,安装mongoose库:

npm install mongoose

然后,在你的代码中连接到MongoDB数据库,并设置慢查询的阈值:

const mongoose = require('mongoose');

// 连接到MongoDB
mongoose.connect('mongodb://localhost:27017/myDatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  serverSelectionTimeoutMS: 5000, // 设置服务器选择超时时间
});

// 设置慢查询阈值(毫秒)
mongoose.set('slowms', 100);

// 监听慢查询事件
mongoose.connection.on('slowQuery', (ctx) => {
  console.log('Slow Query:', ctx);
});

这样,当查询时间超过100毫秒时,Mongoose将记录慢查询信息。

  1. MySQL

要在Node.js中使用MySQL,你需要安装mysqlmysql2库。这里以mysql2为例。

首先,安装mysql2库:

npm install mysql2

然后,在你的代码中连接到MySQL数据库,并设置慢查询的阈值:

const mysql = require('mysql2');

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'myDatabase',
});

// 设置慢查询阈值(毫秒)
connection.queryCache({
  maxAge: 0, // 禁用查询缓存
  onCacheMiss: (sql, params) => {
    const start = process.hrtime();
    connection.query(sql, params, (err, results) => {
      const duration = process.hrtime(start);
      if (duration[0] * 1000 + duration[1] > 100) {
        console.log('Slow Query:', sql, 'Duration:', duration[0] * 1000 + duration[1], 'ms');
      }
    });
  },
});

这样,当查询时间超过100毫秒时,将记录慢查询信息。

注意:这里的示例仅用于演示如何查找慢查询。在实际项目中,你可能需要根据自己的需求进行调整和优化。

0