您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何根据会话查询当前和历史执行过的SQL
## 一、实时会话SQL查询
### 1. MySQL数据库
```sql
-- 查看当前正在执行的SQL
SHOW PROCESSLIST;
-- 使用performance_schema(MySQL 5.6+)
SELECT * FROM performance_schema.events_statements_current
WHERE THREAD_ID IN (SELECT THREAD_ID FROM performance_schema.threads
WHERE PROCESSLIST_ID = [连接ID]);
-- 查看完整SQL文本(需开启收集)
SELECT THREAD_ID, SQL_TEXT FROM performance_schema.events_statements_history_long
WHERE THREAD_ID = [线程ID];
-- 查看会话当前SQL
SELECT s.sid, s.serial#, s.sql_id, q.sql_text
FROM v$session s
JOIN v$sql q ON s.sql_id = q.sql_id
WHERE s.sid = [会话ID];
-- 使用ASH(Active Session History)
SELECT sample_time, sql_id, sql_text FROM v$active_session_history
WHERE session_id = [会话ID] ORDER BY sample_time DESC;
-- 查看当前执行语句
SELECT t.text, s.*
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE session_id = [SPID];
MySQL:开启general_log或使用审计插件
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE';
Oracle:查询AWR报告
SELECT sql_id, sql_text FROM dba_hist_sqltext
WHERE sql_id IN (SELECT sql_id FROM dba_hist_active_sess_history
WHERE session_id = [会话ID]);
PostgreSQL:启用pg_stat_statements
扩展
SELECT query, calls FROM pg_stat_statements
WHERE userid = (SELECT usesysid FROM pg_user WHERE usename = '用户名');
MongoDB:分析profiler日志
db.setProfilingLevel(2) // 开启全量记录
db.system.profile.find().sort({ts:-1}).limit(10)
PROCESS
、SELECT
等权限提示:不同数据库版本语法可能有差异,生产环境操作前建议先在测试环境验证。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。