在命令行或phpmysqladmin中运行:
显示流程列表
说明各列的意思和用途
id列:个标记,对你kill一个语句很有用。
user列:显示当前用户,如果不是root,则此命令只显示您权限范围内的sql语句。
host列:显示此语句是从哪个ip的哪个端口发出的。 可用于跟踪问句的用户。
db列:显示此进程当前连接到哪个数据库。
command列:显示用于执行当前连接的命令。 一般是休眠、查询和连接。
通常,没有释放资源。 如果通过连接池,则sleep的状态必须在一定数量的范围内
实战案例:前端数据输出时,特别是输出到用户终端时,由于没有及时关闭数据库连接,导致网络连接速度大量sleep连接,网络速度异常时,数据库too many connectionnections
简单来说,数据查询和执行通常只需要不到0.01秒,而网络输出通常需要1秒左右或更长时间。 最初,数据连接在0.01秒内释放,但前端程序不执行关闭操作,而是直接输出结果,因此在结果未显示在用户桌面上之前,该数据库连接将保持休眠状态
time列:此状态持续的时间,单位为秒。
state列:显示使用当前连接的sql语句的状态。 一个重要列,后跟所有状态的说明。 请注意,state是语句正在执行的一个状态、一个sql语句和查询的示例,可能需要通过copying to tmp table、Sorting result和sending
info列:显示此sql语句。 由于长度有限,长sql语句显示不完整,但这是判断问题语句的重要依据之一。
此命令中最重要的是state列,mysql中列出的状态主要有:
检查表
正在检查数据表(这是自动的)。
关闭表
将表中的更改数据刷新到磁盘,并关闭已使用的表。 这是非常迅速的操作。 否则,必须检查磁盘空间是否已满,或者磁盘是否不堪重负。
连接输出
复制从服务器已连接到主服务器。
复制到tmp table on disk
由于临时结果集大于tmp_table_size,因此正在将临时表从内存存储转换为磁盘存储以节省内存。