暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【ACDU 翻译 ] MySQL 8.14.3 一般线程状态

原创 由迪 2021-07-13
303

下面的列表描述了State 与一般查询处理相关联的线程值,而不是更专业的活动,如复制。其中许多仅用于查找服务器中的错误。

  • After create

    当线程在创建表的函数结束时创建表(包括内部临时表)时,就会发生这种情况。即使由于某些错误无法创建表,也会使用此状态。

  • altering table

    服务器正在执行就地 ALTER TABLE.

  • Analyzing

    该线程正在计算MyISAM表键分布(例如,for ANALYZE TABLE)。

  • checking permissions

    线程正在检查服务器是否具有执行语句所需的权限。

  • Checking table

    该线程正在执行表检查操作。

  • cleaning up

    线程已经处理了一个命令并准备释放内存并重置某些状态变量。

  • closing tables

    该线程正在将更改的表数据刷新到磁盘并关闭已使用的表。这应该是一个快速的操作。如果没有,请确认您没有完整的磁盘并且该磁盘没有被大量使用。

  • converting HEAP to ondisk

    该线程正在将内部临时表从 MEMORY表转换为磁盘表。

  • copy to tmp table

    线程正在处理一个ALTER TABLE语句。这种状态发生在具有新结构的表被创建之后但在行被复制到其中之前。

    对于处于这种状态的线程,Performance Schema 可用于获取有关复制操作的进度。请参阅 第 27.12.5 节,“性能架构阶段事件表”

  • Copying to group table

    如果语句具有不同ORDER BYGROUP BY标准,各行按组排列和复制到一个临时表。

  • Copying to tmp table

    服务器正在复制到内存中的临时表。

  • Copying to tmp table on disk

    服务器正在复制到磁盘上的临时表。临时结果集变得太大(参见 第 8.4.4 节,“MySQL 中的内部临时表使用”)。因此,线程将临时表从内存中更改为基于磁盘的格式以节省内存。

  • Creating index

    该线程正在处理ALTER TABLE ... ENABLE KEYS一个MyISAM表。

  • Creating sort index

    该线程正在处理SELECT使用内部临时表解析的a 。

  • creating table

    该线程正在创建一个表。这包括创建临时表。

  • Creating tmp table

    该线程正在内存或磁盘上创建临时表。如果表是在内存中创建的,但后来转换为磁盘上的表,则该操作期间的状态为Copying to tmp table on disk

  • committing alter table to storage engine

    服务器已就地完成 ALTER TABLE并提交结果。

  • deleting from main table

    服务器正在执行多表删除的第一部分。它仅从第一个表中删除,并保存用于从其他(参考)表中删除的列和偏移量。

  • deleting from reference tables

    服务器正在执行多表删除的第二部分,并从其他表中删除匹配的行。

  • discard_or_import_tablespace

    线程正在处理ALTER TABLE ... DISCARD TABLESPACEorALTER TABLE ... IMPORT TABLESPACE语句。

  • end

    这发生在最后但在清理 ALTER TABLE, CREATE VIEW, DELETE, INSERT, SELECT, 或 UPDATE语句之前。

    对于end状态,可能会发生以下操作:

    • 将事件写入二进制日志
    • 释放内存缓冲区,包括用于 blob
  • executing

    线程已开始执行语句。

  • Execution of init_command

    线程正在执行init_command系统变量值中的语句 。

  • freeing items

    线程已执行命令。此状态通常后跟cleaning up.

  • FULLTEXT initialization

    服务器正准备执行自然语言全文搜索。

  • init

    出现这种情况的初始化之前 ALTER TABLEDELETEINSERTSELECT,或 UPDATE语句。服务器在此状态下采取的操作包括刷新二进制日志和InnoDB日志。

  • Killed

    有人KILL 向线程发送了一条语句,它应该在下次检查终止标志时中止。该标志在 MySQL 的每个主要循环中都被检查,但在某些情况下,线程可能仍然需要很短的时间。如果该线程被某个其他线程锁定,则一旦其他线程释放其锁,kill 就会生效。

  • Locking system tables

    线程试图锁定系统表(例如,时区或日志表)。

  • logging slow query

    该线程正在向慢查询日志写入一条语句。

  • login

    连接线程的初始状态,直到客户端通过身份验证成功。

  • manage keys

    服务器正在启用或禁用表索引。

  • Opening system tables

    该线程正在尝试打开系统表(例如,时区或日志表)。

  • Opening tables

    该线程正在尝试打开一个表。这应该是一个非常快的过程,除非有什么东西阻止了打开。例如,一个ALTER TABLE或一个 LOCK TABLE语句可以阻止打开一个表,直到该语句完成。还值得检查您的table_open_cache价值是否足够大。

    对于系统表,Opening system tables改为使用状态。

  • optimizing

    服务器正在为查询执行初始优化。

  • preparing

    此状态发生在查询优化期间。

  • Purging old relay logs

    该线程正在删除不需要的中继日志文件。

  • query end

    此状态发生在处理查询之后但在该freeing items状态之前 。

  • Receiving from client

    服务器正在从客户端读取数据包。

  • Removing duplicates

    查询的使用 SELECT DISTINCT方式使得 MySQL 无法在早期优化掉不同的操作。因此,在将结果发送到客户端之前,MySQL 需要一个额外的阶段来删除所有重复的行。

  • removing tmp table

    线程在处理SELECT 语句后删除内部临时表。如果没有创建临时表,则不使用此状态。

  • rename

    该线程正在重命名表。

  • rename result table

    线程正在处理一条ALTER TABLE语句,创建了新表,并正在重命名它以替换原始表。

  • Reopen tables

    线程获得了表的锁,但在获得锁后注意到底层表结构发生了变化。它释放了锁,关闭了表,并试图重新打开它。

  • Repair by sorting

    修复代码正在使用排序来创建索引。

  • preparing for alter table

    服务器正准备执行就地 ALTER TABLE.

  • Repair done

    该线程已完成对MyISAM表的多线程修复 。

  • Repair with keycache

    修复码是通过密钥缓存一一创建密钥。这比Repair by sorting.

  • Rolling back

    该线程正在回滚事务。

  • Saving state

    对于MyISAM修复或分析等表操作,线程正在将新表状态保存到.MYI文件头中。状态包括诸如行数、 AUTO_INCREMENT计数器和密钥分布等信息。

  • Searching rows for update

    该线程正在执行第一阶段以在更新它们之前找到所有匹配的行。如果UPDATE正在更改用于查找相关行的索引,则必须这样做 。

  • Sending data

    MySQL 8.0.17 之前:线程正在读取和处理SELECT语句的行 ,并向客户端发送数据。由于在此状态期间发生的操作往往会执行大量磁盘访问(读取),因此它通常是给定查询生命周期中运行时间最长的状态。MySQL 8.0.17 及更高版本:此状态不再单独指示,而是包含在Executing状态中。

  • Sending to client

    服务器正在向客户端写入数据包。

  • setup

    线程正在开始ALTER TABLE操作。

  • Sorting for group

    该线程正在执行排序以满足 a GROUP BY

  • Sorting for order

    该线程正在执行排序以满足ORDER BY.

  • Sorting index

    该线程正在对索引页进行排序,以便在MyISAM表优化操作期间进行更有效的访问。

  • Sorting result

    对于SELECT语句,这类似于Creating sort index,但适用于非临时表。

  • starting

    语句执行开始时的第一阶段。

  • statistics

    服务器正在计算统计信息以制定查询执行计划。如果一个线程长时间处于这种状态,则服务器可能是磁盘绑定执行其他工作。

  • System lock

    该线程已被调用mysql_lock_tables() ,此后线程状态尚未更新。这是一种非常普遍的状态,可能由于多种原因而发生。

    例如,线程将请求或等待表的内部或外部系统锁。当InnoDB在执行期间等待表级锁时, 可能会发生这种情况LOCK TABLES。如果此状态是由外部锁请求引起的,并且您没有使用多个访问相同 表的mysqld服务器,则MyISAM可以使用该--skip-external-locking 选项禁用外部系统锁 。但是,默认情况下禁用外部锁定,因此该选项很可能不起作用。对于 SHOW PROFILE,这种状态意味着线程正在请求锁定(而不是等待它)。

    对于系统表,Locking system tables改为使用状态。

  • update

    线程正准备开始更新表。

  • Updating

    该线程正在搜索要更新的行并正在更新它们。

  • updating main table

    服务器正在执行多表更新的第一部分。它只更新第一个表,并保存用于更新其他(参考)表的列和偏移量。

  • updating reference tables

    服务器正在执行多表更新的第二部分,并更新其他表中匹配的行。

  • User lock

    线程将要请求或正在等待通过GET_LOCK()调用请求的咨询锁 。对于 SHOW PROFILE,这种状态意味着线程正在请求锁定(而不是等待它)。

  • User sleep

    线程调用了一个 SLEEP()调用。

  • Waiting for commit lock

    FLUSH TABLES WITH READ LOCK 正在等待提交锁。

  • waiting for handler commit

    与查询处理的其他部分相比,线程正在等待事务提交。

  • Waiting for tables

    线程收到通知,指出表的基础结构已更改,需要重新打开表以获取新结构。但是,要重新打开该表,它必须等到所有其他线程都关闭了该表。

    如果另一个线程使用FLUSH TABLES了相关表上的或以下语句之一,则会发生此通知 : , , , , , 或 。 FLUSH TABLES *tbl_name*ALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLEOPTIMIZE TABLE

  • Waiting for table flush

    线程正在执行FLUSH TABLES并等待所有线程关闭它们的表,或者线程收到通知,表明表的基础结构已更改,需要重新打开表以获取新结构。但是,要重新打开该表,它必须等到所有其他线程都关闭了该表。

    如果另一个线程使用FLUSH TABLES了相关表上的或以下语句之一,则会发生此通知 : , , , , , 或 。 FLUSH TABLES *tbl_name*ALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLEOPTIMIZE TABLE

  • Waiting for *lock_type* lock

    服务器正在等待THR_LOCK从元数据锁定子系统获取 锁或锁,其中 *lock_type*表示锁的类型。

    此状态表示等待 a THR_LOCK

    • Waiting for table level lock

    这些状态表示等待元数据锁定:

    • Waiting for event metadata lock
    • Waiting for global read lock
    • Waiting for schema metadata lock
    • Waiting for stored function metadata lock
    • Waiting for stored procedure metadata lock
    • Waiting for table metadata lock
    • Waiting for trigger metadata lock

    有关表锁定指示器的信息,请参阅 第 8.11.1 节,“内部锁定方法”。有关元数据锁定的信息,请参阅第 8.11.4 节,“元数据锁定”。要查看哪些锁阻塞了锁请求,请使用第 27.12.13 节“性能模式锁表”中描述的 性能模式锁表

  • Waiting on cond

    线程正在等待条件变为真的通用状态。没有可用的特定状态信息。

  • Writing to net

    服务器正在向网络写入数据包。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论