#### 27.12.21.2 主机\_缓存表

[](<>)[](<>)

MySQL 服务器维护一个内存中的主机缓存，其中包含客户端主机名和 IP 地址信息，用于避免域名系统 (DNS) 查找。这[`主机缓存`](performance-schema-host-cache-table.html)table 公开了这个缓存的内容。这[`主机缓存大小`](server-system-variables.html#sysvar_host_cache_size)系统变量控制主机缓存的大小，以及[`主机缓存`](performance-schema-host-cache-table.html)桌子。有关主机缓存的操作和配置信息，请参阅[第 5.1.12.3 节，“DNS 查找和主机缓存”](host-cache.html).

因为[`主机缓存`](performance-schema-host-cache-table.html)表暴露了主机缓存的内容，可以使用[`选择`](select.html)陈述。这可以帮助您诊断连接问题的原因。

这[`主机缓存`](performance-schema-host-cache-table.html)表有这些列：

-   `知识产权`

    连接到服务器的客户端的 IP 地址，以字符串形式表示。

-   `主持人`

    该客户端 IP 的解析 DNS 主机名，或`空值`如果名字未知。

-   `HOST_VALIDATED`

    客户端 IP 的 IP 到主机名到 IP DNS 解析是否成功执行。如果`HOST_VALIDATED`是`是的`， 这`主持人`列作为 IP 对应的主机名，这样可以避免对 DNS 的额外调用。尽管`HOST_VALIDATED`是`不`, 每次连接尝试都会尝试 DNS 解析，直到最终以有效结果或永久错误完成。此信息使服务器能够避免在临时 DNS 故障期间缓存错误或丢失的主机名，这将永远对客户端产生负面影响。

-   `SUM_CONNECT_ERRORS`

    被视为“阻塞”的连接错误的数量（根据[`max_connect_errors`](server-system-variables.html#sysvar_max_connect_errors)系统变量）。仅计算协议握手错误，并且仅针对通过验证的主机（`HOST_VALIDATED = 是`）。

    一次`SUM_CONNECT_ERRORS`对于给定的主机达到的值[`max_connect_errors`](server-system-variables.html#sysvar_max_connect_errors)，来自该主机的新连接被阻止。这`SUM_CONNECT_ERRORS`值可以超过[`max_connect_errors`](server-system-variables.html#sysvar_max_connect_errors)值，因为在主机未被阻止的情况下，可以同时发生来自主机的多次连接尝试。它们中的任何一个或全部都可能失败，独立递增`SUM_CONNECT_ERRORS`, 可能超出[`max_connect_errors`](server-system-variables.html#sysvar_max_connect_errors).

    假设[`max_connect_errors`](server-system-variables.html#sysvar_max_connect_errors)是 200 并且`求和连接错误`对于给定的主机来说是199。如果有10个客户端试图同时从该主机连接，它们都不会被阻止，因为`求和连接错误`还没有达到200。如果其中五个客户端出现阻塞错误，`求和连接错误`每个客户增加一个，从而`求和连接错误`值204。其他五个客户成功了，并且没有因为`求和连接错误`当他们开始尝试连接时，还没有达到200次。之后开始的来自主机的新连接`求和连接错误`有200人被封锁。

-   `计数\u主机\u阻止的\u错误`

    由于以下原因而被阻止的连接数：`求和连接错误`超过了[`最大连接错误`](server-system-variables.html#sysvar_max_connect_errors)系统变量。

-   `计数\u名称信息\u暂时性\u错误`

    IP到主机名DNS解析期间的暂时错误数。

-   `计数\u名称信息\u永久性\u错误`

    IP到主机名DNS解析期间的永久错误数。

-   `计数\u格式\u错误`

    主机名格式错误的数量。MySQL不执行`主办`中的列值`mysql。使用者`针对主机名的系统表，该主机名的一个或多个初始组件完全是数字，例如`1.2.实例通用域名格式`。将使用客户端IP地址。有关不发生这种匹配的基本原理，请参阅[第6.2.4节“指定账户名称”](account-names.html).

-   `计数\u ADDRINFO\u瞬时\u错误`

    主机名到IP反向DNS解析期间的暂时错误数。

-   `计数\u ADDRINFO\u永久性\u错误`

    主机名到IP反向DNS解析期间的永久错误数。

-   `计数错误`

    正向确认的反向DNS错误数。当IP到主机名到IP DNS解析生成的IP地址与客户端原始IP地址不匹配时，就会发生这些错误。

-   `计数\u主机\u ACL\u错误`

    由于不允许用户从客户端主机连接而发生的错误数。在这种情况下，服务器返回[`主人没有特权`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_host_not_privileged)甚至不需要用户名或密码。

-   `计数\u无\u验证\u插件\u错误`

    由于请求不可用的身份验证插件而导致的错误数。例如，如果插件从未加载或加载尝试失败，则插件可能不可用。

-   `计数\u验证\u插件\u错误`

    身份验证插件报告的错误数。

    身份验证插件可以报告不同的错误代码，以指示故障的根本原因。根据错误的类型，其中一列将递增：`计数\u身份验证\u错误`, `计数\u验证\u插件\u错误`, `统计握手错误`.新的返回码是现有插件API的可选扩展。未知或意外的插件错误将计入`计数\u验证\u插件\u错误`柱

-   `统计握手错误`

    在有线协议级别检测到的错误数。

-   `计数\u代理\u用户\u错误`

    代理用户A被代理给另一个不存在的用户B时检测到的错误数。

-   `计数\u代理\u用户\u ACL\u错误`

    代理用户A被代理给另一个用户B时检测到的错误数，该用户B确实存在，但A没有相应的权限[`代理`](privileges-provided.html#priv_proxy)特权

-   `计数\u身份验证\u错误`

    身份验证失败导致的错误数。

-   `计数SSL错误`

    SSL问题导致的错误数。

-   `计数\u最大\u用户\u连接\u错误`

    由于超过每用户连接配额而导致的错误数。看见[第6.2.21节“设置账户资源限制”](user-resources.html).

-   `计算每小时最多用户连接数错误数`

    由于超过每小时每用户连接数配额而导致的错误数。看见[第6.2.21节“设置账户资源限制”](user-resources.html).

-   `计数\默认\数据库\错误`

    与默认数据库相关的错误数。例如，数据库不存在或用户没有访问它的权限。

-   `计数\u初始\u连接\u错误`

    中的语句执行失败导致的错误数[`init_connect`](server-system-variables.html#sysvar_init_connect)系统变量值。

-   `统计本地错误`

    服务器实现的本地错误数，与网络、身份验证或授权无关。例如，内存不足的情况属于这一类。

-   `计数未知错误`

    此表中其他列未说明的其他未知错误数。此列保留供将来使用，以防必须报告新的错误情况，并且如果保留[`主机缓存`](performance-schema-host-cache-table.html)表格是必需的。

-   `第一次见到`

    在中从客户端看到的第一次连接尝试的时间戳`知识产权`柱

-   `最后一次见到`

    在中从客户端看到的最近一次连接尝试的时间戳`知识产权`柱

-   `第一个错误`

    中从客户端看到的第一个错误的时间戳`知识产权`柱

-   `上次看到的错误`

    在中从客户端看到的最新错误的时间戳`知识产权`柱

    这个[`主机缓存`](performance-schema-host-cache-table.html)表中有以下索引：

-   主键打开(`知识产权`)

-   索引(`主办`)

[`截断表`](truncate-table.html)是允许的[`主机缓存`](performance-schema-host-cache-table.html)桌子它需要[`滴`](privileges-provided.html#priv_drop)这张桌子的特权。截断表会刷新主机缓存，其效果如中所述[刷新主机缓存](host-cache.html#host-cache-flushing).
