• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: MySQL 8 中文手册 -> MySQL 性能优化

    检查线程信息

    当您尝试确定MySQL服务器在做什么时,检查进程列表(这是服务器中当前正在执行的线程集)可能会有所帮助。可以从以下来源获得过程列表信息:

    • SHOW[FULL] PROCESSLIST语句:“ SHOW PROCESSLIST语句”
    • SHOW PROFILE语句:“ SHOW PROFILES语句”
    • INFORMATION_SCHEMAPROCESSLIST表:第25.22,“该INFORMATION_SCHEMA PROCESSLIST表”
    • 中mysqladmin processlist的命令:“中mysqladmin-客户端管理MySQL服务器”
    • 性能模式threads表,阶段表和锁定表:“性能模式杂项表”,“性能模式阶段事件表”,“性能模式锁表”。

    访问threads不需要互斥,并且对服务器性能的影响最小。INFORMATION_SCHEMA.PROCESSLIST并且SHOW PROCESSLIST由于它们需要互斥量而对性能造成负面影响。threads还显示有关后台线程,哪些信息INFORMATION_SCHEMA.PROCESSLISTSHOW PROCESSLIST没有。这意味着threads可以用来监视其他线程信息源无法监视的活动。

    您始终可以查看有关自己线程的信息。要查看有关其他帐户正在执行的线程的信息,您必须具有PROCESS特权。

    每个进程列表条目包含几条信息:

    • Id是与线程关联的客户端的连接标识符。
    • UserHost指出与该线程关联的帐户。
    • db是线程的默认数据库,或者NULL如果未选择任何数据库。
    • CommandState指出线程在做什么。

      大多数状态对应于非常快速的操作。如果线程在给定状态下停留许多秒钟,则可能存在需要调查的问题。

    • Time指示线程处于其当前状态已有多长时间。在某些情况下,线程当前时间的概念可能会更改:线程可以使用更改时间。对于在从属服务器上运行的,正在处理来自主服务器的事件的线程,线程时间设置为事件中找到的时间,从而反映了主服务器而非从属服务器上的当前时间。SET TIMESTAMP =value
    • Info包含线程正在执行的语句的文本,或者NULL不执行的语句的文本。默认情况下,此值仅包含语句的前100个字符。要查看完整的语句,请使用SHOW FULL PROCESSLIST
    • sys架构processlist视图,呈现从性能模式的信息threads在更方便的格式表:第27.4.3.22,“ProcessList中和X $ PROCESSLIST意见”
    • sys模式session认为,有关用户会话呈现信息(如sys架构processlist视图,但后台进程滤除):第27.4.3.33,“会议和X $会话视图”

    以下各节列出了可能的Command值以及State按类别分组的值。其中一些值的含义不言而喻。对于其他人,提供了附加描述。