上一篇
如何有效查询数据库中正在执行的进程及其详细信息?
- 数据库
- 2025-11-05
- 8
数据库查看执行的进程是一个非常重要的操作,它可以帮助我们了解数据库的运行状态,发现潜在的性能瓶颈,以及诊断和解决性能问题,以下是几种常见的数据库系统中查看执行进程的方法。
MySQL
在MySQL中,我们可以使用以下命令来查看执行的进程:
- SHOW PROCESSLIST;:显示当前所有线程的进程列表。
- SHOW FULL PROCESSLIST;:显示当前所有线程的进程列表,包括连接的详细信息。
以下是一个SHOW PROCESSLIST;命令的输出示例:

| Id | User | Host | db | Command | Time | State | Info |
|---|---|---|---|---|---|---|---|
| 1 | root | localhost | information_schema | Sleep | 0 | Waiting for table metadata lock | NULL |
| 2 | root | localhost | test | Query | 0 | NULL | SELECT * FROM test WHERE id = 1 |
| 3 | root | localhost | test | Query | 0 | NULL | SELECT * FROM test WHERE id = 2 |
PostgreSQL
在PostgreSQL中,我们可以使用以下命令来查看执行的进程:
- SELECT * FROM pg_stat_activity;:显示当前所有线程的进程列表。
以下是一个SELECT * FROM pg_stat_activity;命令的输出示例:

| datid | datname | usename | application_name | client_addr | backend_start | xact_start | query_start | state_change | wait_event_type | xact_state | query | state |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16384 | postgres | postgres | postgres: Heap Scan | :1 | 20250401 14:23:27.547465+08 | 20250401 14:23:27.547465+08 | 20250401 14:23:27.547465+08 | 20250401 14:23:27.547465+08 | 20250401 14:23:27.547465+08 | 20250401 14:23:27.547465+08 | SELECT * FROM pg_stat_activity | Active |
SQL Server
在SQL Server中,我们可以使用以下命令来查看执行的进程:
- SP_WHO:显示当前所有线程的进程列表。
- SP_WHOIS:显示指定进程的详细信息。
以下是一个SP_WHO命令的输出示例:
| SPID | Status | LoginTime | Program Name | HostName | BlkBy | DbName | Command |
|---|---|---|---|---|---|---|---|
| 52 | ACTIVE | 20250401 14:23:27.547465+08 | sqlservr | localhost | NULL | master | Sleep |
| 53 | ACTIVE | 20250401 14:23:27.547465+08 | sqlservr | localhost | NULL | master | Sleep |
| 54 | ACTIVE | 20250401 14:23:27.547465+08 | sqlservr | localhost | NULL | master | Sleep |
FAQs
Q1:如何结束一个正在执行的进程?

A1:
- 在MySQL中,可以使用KILL命令来结束一个进程,KILL 2;。
- 在PostgreSQL中,可以使用pg_terminate_backend函数来结束一个进程,SELECT pg_terminate_backend(2);。
- 在SQL Server中,可以使用KILL命令来结束一个进程,KILL 53;。
Q2:如何查看一个进程的详细信息?
A2:
- 在MySQL中,可以使用SHOW PROCESSLIST;命令结合SHOW FULL PROCESSLIST;命令来查看进程的详细信息。
- 在PostgreSQL中,可以使用SELECT * FROM pg_stat_activity WHERE pid = 2;命令来查看进程的详细信息。
- 在SQL Server中,可以使用SELECT * FROM sys.dm_exec_requests WHERE session_id = 53;命令来查看进程的详细信息。