• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 通过线程进行预过滤

    threads表为每个服务器线程包含一行。每行都包含有关线程的信息,并指示是否为该线程启用了监视。为了使Performance Schema监视线程,必须满足以下条件:

    • 表中的thread_instrumentation使用者setup_consumers必须为YES
    • threads.INSTRUMENTED列必须为YES
    • 仅对由setup_instruments表中启用的工具产生的那些线程事件进行监视。

    threads表还指示每个服务器线程是否执行历史事件日志记录。这包括等待,阶段,语句和事务事件,并影响到这些表的日志记录:

    events_waits_history
    events_waits_history_long
    events_stages_history
    events_stages_history_long
    events_statements_history
    events_statements_history_long
    events_transactions_history
    events_transactions_history_long
    

    为了进行历史事件日志记录,这些条件必须为真:

    • setup_consumers必须在表中启用与历史记录相关的适当使用者。例如,在events_waits_historyevents_waits_history_long表中的等待事件日志记录要求相应的events_waits_historyevents_waits_history_long使用者为YES
    • threads.HISTORY列必须为YES
    • 仅对由setup_instruments表中启用的工具产生的那些线程事件进行记录。

    用于前景螺纹(从客户端连接造成的),的初始值INSTRUMENTEDHISTORY在列threads表的行由与线程相关联的用户帐户是否匹配在任何行确定setup_actors表。这些值来自匹配表行的ENABLEDHISTORYsetup_actors

    对于后台线程,没有关联的用户。INSTRUMENTED并且HISTORYYES在默认情况下并setup_actors没有意见。

    初始setup_actors内容如下所示:

    mysql> SELECT * FROM performance_schema.setup_actors;
    +------	+------	+------	+---------	+---------	+
    | HOST	| USER	| ROLE	| ENABLED	| HISTORY	|
    +------	+------	+------	+---------	+---------	+
    | %	| %	| %	| YES	| YES	|
    +------	+------	+------	+---------	+---------	+
    

    HOSTUSER列应包含文本的主机或用户名,或'%'以匹配任何名称。

    ENABLEDHISTORY列表示是否使能仪器和历史事件记录进行匹配螺纹,受试者先前所描述的其他条件。

    当Performance Schema为中的每个新前景线程检查匹配项时setup_actors,它将尝试使用USERHOST列(ROLE未使用)首先查找更具体的匹配项:

    • 与和排。USER='literal'HOST='literal'
    • 与和排。USER='literal'HOST='%'
    • USER='%'和排。HOST='literal'
    • USER='%'和排HOST='%'

    匹配发生的顺序很重要,因为不同的匹配setup_actors行可以具有不同的USERHOST值。这样,可以根据ENABLEDHISTORY列的值,选择性地对每个主机,用户或帐户(用户和主机组合)应用检测和历史事件日志记录:

    • 当最匹配的行是时ENABLED=YESINSTRUMENTED线程的值变为YES。当最匹配的行是时HISTORY=YESHISTORY线程的值变为YES
    • 当最匹配的行是时ENABLED=NOINSTRUMENTED线程的值变为NO。当最匹配的行是时HISTORY=NOHISTORY线程的值变为NO
    • 如果找不到匹配项,则线程的INSTRUMENTEDHISTORY值变为NO

    行中的ENABLEDHISTORYsetup_actors可以设置为彼此YESNO独立。这意味着您可以独立于是否收集历史事件来启用检测。

    默认情况下,监测和历史事件收集所有新的前景线程启用,因为setup_actors表最初包含有一排'%'两个HOSTUSER。要执行更有限的匹配,例如仅启用对某些前台线程的监视,必须更改此行,因为它匹配任何连接,并为更特定的HOST/USER组合添加行。

    假设您setup_actors进行如下修改:

    UPDATE performance_schema.setup_actors
    SET ENABLED = 'NO', HISTORY = 'NO'
    WHERE HOST = '%' AND USER = '%';
    INSERT INTO performance_schema.setup_actors
    (HOST,USER,ROLE,ENABLED,HISTORY)
    VALUES('localhost','joe','%','YES','YES');
    INSERT INTO performance_schema.setup_actors
    (HOST,USER,ROLE,ENABLED,HISTORY)
    VALUES('hosta.example.com','joe','%','YES','NO');
    INSERT INTO performance_schema.setup_actors
    (HOST,USER,ROLE,ENABLED,HISTORY)
    VALUES('%','sam','%','NO','YES');
    

    UPDATE语句更改默认匹配以禁用检测和历史事件收集。该INSERT语句进行更具体的比赛添加行。

    现在,性能架构确定如何如下设置新连接线程的INSTRUMENTEDHISTORY值:

    • 如果joe从本地主机进行连接,则该连接与插入的第一行匹配。线程的INSTRUMENTEDHISTORY值变为YES
    • 如果joe从连接hosta.example.com,则连接匹配插入的第二行。在INSTRUMENTED该线程值变为YESHISTORY值变为NO
    • 如果joe从任何其他主机连接,则没有匹配项。线程的INSTRUMENTEDHISTORY值变为NO
    • 如果sam从任何主机进行连接,则该连接与插入的第三行匹配。在INSTRUMENTED该线程值变为NOHISTORY值变为YES
    • 对于任何其他连接,带有HOSTUSER设置为'%'match 的行。该行现在具有ENABLEDHISTORY设置为NO,因此该线程的INSTRUMENTEDHISTORY值变为NO

    setup_actors表的修改仅影响在修改之后创建的前台线程,而不影响现有线程。要影响现有线程,请修改表行的INSTRUMENTEDHISTORYthreads