首页 > 编程知识 正文

数据库集群慢,如何解决数据库查询慢的问题

时间:2023-05-05 03:33:27 阅读:50975 作者:2270

在命令行或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,因此正在将临时表从内存存储转换为磁盘存储以节省内存。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。