Files
nxxmdata/backend/scripts/test-connection.js
2025-08-25 15:00:46 +08:00

76 lines
2.4 KiB
JavaScript

/**
* 数据库连接测试脚本
* @file test-connection.js
* @description 测试数据库连接、连接池状态和查询性能
*/
const { sequelize } = require('../models');
const { User } = require('../models');
const dbPool = require('../config/database-pool');
const queryOptimizer = require('../config/query-optimizer');
const dbMonitor = require('../config/db-monitor');
async function testConnection() {
try {
console.log('开始测试数据库连接...');
// 测试数据库连接
await sequelize.authenticate();
console.log('数据库连接成功');
// 获取连接池状态
const poolStatus = await dbPool.getPoolStatus();
console.log('连接池状态:', JSON.stringify(poolStatus, null, 2));
// 获取数据库状态
const dbStatus = await queryOptimizer.getDatabaseStatus();
console.log('数据库状态:', JSON.stringify(dbStatus, null, 2));
// 查询用户数量
console.time('用户查询');
const userCount = await User.count();
console.timeEnd('用户查询');
console.log(`当前用户数量: ${userCount}`);
// 执行查询分析
const userQuery = User.findAll();
const explainResult = await queryOptimizer.explainQuery(userQuery);
console.log('查询分析结果:', JSON.stringify(explainResult, null, 2));
// 获取表信息
const tableInfo = await queryOptimizer.getTableInfo('users');
console.log('用户表信息:', JSON.stringify(tableInfo, null, 2));
// 获取索引信息
const indexInfo = await queryOptimizer.getIndexInfo('users');
console.log('用户表索引:', JSON.stringify(indexInfo, null, 2));
// 监控连接状态
const connectionStatus = await dbMonitor.checkConnectionStatus();
console.log('连接监控状态:', JSON.stringify(connectionStatus, null, 2));
// 关闭数据库连接
await sequelize.close();
console.log('数据库连接已关闭');
process.exit(0);
} catch (error) {
console.error('数据库连接测试失败:', error);
// 尝试关闭数据库连接
try {
await sequelize.close();
console.log('数据库连接已关闭');
} catch (closeError) {
console.error('关闭数据库连接失败:', closeError);
}
process.exit(1);
}
}
// 如果直接运行此脚本,则执行测试
if (require.main === module) {
testConnection();
}
module.exports = testConnection;