/** * 数据库连接测试脚本 * @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;