guoyu/Test/sql/diagnostic_check.sql

104 lines
3.2 KiB
MySQL
Raw Normal View History

-- ================================================
-- 系统性能诊断脚本
-- ================================================
USE study;
-- ================================================
-- 1. 检查当前正在运行的查询
-- ================================================
SELECT '检查当前运行的查询...' AS info;
SELECT
id,
user,
host,
db,
command,
time AS '执行时间(秒)',
state AS '状态',
LEFT(info, 100) AS 'SQL语句'
FROM information_schema.processlist
WHERE db = 'study'
ORDER BY time DESC;
-- ================================================
-- 2. 检查表的索引数量索引过多会导致INSERT/UPDATE变慢
-- ================================================
SELECT '检查索引数量...' AS info;
SELECT
TABLE_NAME AS '表名',
COUNT(DISTINCT INDEX_NAME) AS '索引数量',
GROUP_CONCAT(DISTINCT INDEX_NAME) AS '索引列表'
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'study'
AND TABLE_NAME IN ('sys_user', 'student_class', 'sys_user_role')
GROUP BY TABLE_NAME
ORDER BY COUNT(DISTINCT INDEX_NAME) DESC;
-- ================================================
-- 3. 检查表大小和行数
-- ================================================
SELECT '检查表大小...' AS info;
SELECT
TABLE_NAME AS '表名',
TABLE_ROWS AS '行数',
ROUND(DATA_LENGTH/1024/1024, 2) AS '数据大小(MB)',
ROUND(INDEX_LENGTH/1024/1024, 2) AS '索引大小(MB)',
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024/1024, 2) AS '总大小(MB)'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'study'
AND TABLE_NAME IN ('sys_user', 'student_class', 'sys_user_role', 'study_class')
ORDER BY (DATA_LENGTH+INDEX_LENGTH) DESC;
-- ================================================
-- 4. 检查是否有锁表
-- ================================================
SELECT '检查表锁...' AS info;
SHOW OPEN TABLES WHERE In_use > 0;
-- ================================================
-- 5. 测试简单查询的性能
-- ================================================
SELECT '测试查询性能...' AS info;
-- 测试1简单SELECT
SET @start_time = NOW(6);
SELECT COUNT(*) FROM sys_user;
SET @end_time = NOW(6);
SELECT TIMESTAMPDIFF(MICROSECOND, @start_time, @end_time)/1000 AS '查询耗时(ms)';
-- ================================================
-- 6. 查看慢查询日志状态
-- ================================================
SELECT '慢查询配置...' AS info;
SHOW VARIABLES LIKE 'slow_query%';
SHOW VARIABLES LIKE 'long_query_time';
-- ================================================
-- 7. 检查数据库连接数
-- ================================================
SELECT '检查连接数...' AS info;
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Max_used_connections';
SHOW VARIABLES LIKE 'max_connections';
-- ================================================
-- 8. 详细查看 sys_user 表的所有索引
-- ================================================
SELECT '详细索引信息 - sys_user' AS info;
SHOW INDEX FROM sys_user;
-- ================================================
-- 9. 详细查看 student_class 表的所有索引
-- ================================================
SELECT '详细索引信息 - student_class' AS info;
SHOW INDEX FROM student_class;