增加表的打开缓存大小

Cloud SQL 大量打开的表 Recommender 可帮助您检测并发打开表的数量等于 table_open_cache 的值的实例。然后提供一些有关如何优化此类实例以提高性能的建议。

本页介绍了大量打开的表 Recommender 的工作原理和使用方法。

工作原理

MySQL 是多线程的,客户端可以通过多个线程同时针对同一表发出查询。因此,MySQL 可以为每个会话单独打开表。同时打开的表的数量由 table_open_cache 管理。如果缓存已满并且打开了其他表,MySQL 会关闭最近最少使用的表。如果缓存中的所有表当前正在使用,则 MySQL 会临时扩展缓存,并在表未使用后立即关闭表。

如果打开的表的数量超过 table_open_cache 值,则在工作负载较高期间,数据库性能可能会受到不利影响。这是因为系统会创建更多线程,并且表处理程序必须更频繁地打开和关闭表。

Cloud SQL 大量打开的表 Recommender 会分析 Cloud SQL MySQL 实例上每天打开表数的指标。如果打开的表的数量在过去 24 小时内以每 2 秒 1 个或更快的速度增加,并且打开的表的数量超过 table_open_cache 值,则 Recommender 会建议您调整 table_open_cache 标志。

价格

Cloud SQL 大量打开的表 Recommender 为标准 Recommender 价格层级。

准备工作

在查看建议和数据分析之前,请执行以下操作:

  • 如需获得查看和使用数据分析和建议的权限,请确保您拥有所需的角色。
    Tasks 角色
    查看建议 以下角色之一:recommender.cloudsqlViewer 或 cloudsql.viewer。
    采纳建议 以下角色之一:recommender.cloudsqlAdmin、cloudsql.editor 或 cloudsql.admin。
    如需详细了解角色,请参阅了解角色和授予 IAM 权限。
  • Enable the Recommender API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

列出实例性能建议

您可以使用 Cloud de Confiance 控制台、gcloud CLI或 Recommender API 列出实例性能建议。

仅当您的实例接近性能阈值限制时,系统才会显示改进实例性能建议。

控制台

如需使用Cloud de Confiance 控制台列出有关实例性能的建议,请按照以下步骤操作:

  1. 转到 Cloud SQL 实例页面。

    打开“Cloud SQL 实例”

  2. 点击“增加表打开缓存”建议横幅上的查看全部。

或者,请按以下步骤操作:

  1. 前往 Active Assist。另请参阅 Recommendation Hub 使用入门。

    前往 Active Assist

  2. 在 Improve Cloud SQL Instance Performance(改进 Cloud SQL 实例性能)卡片中,点击查看全部。

  3. 选择具有 Increase table open cache(增加表打开缓存)建议的实例。

gcloud CLI

如需使用 gcloud CLI 列出“改进实例性能”建议,请运行 gcloud recommender recommendations list 命令,如下所示:

gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=LOCATION \
--recommender=google.cloudsql.instance.PerformanceRecommender \
--filter=recommenderSubtype=MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • LOCATION:区域,例如 us-central1

API

如需使用 Recommendations API 列出“改进实例性能”建议,请调用 recommendations.list 方法,如下所示:

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/recommenders/google.cloudsql.instance.PerformanceRecommender.MySqlHighNumberOfTablesBestPractice/recommendations

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:区域,例如 us-central1。

如果 Recommender 检测到具有大量打开表的实例,它会将其与其他性能建议一起在某个表中。每行显示实例 ID、简要建议、数据库引擎、位置和上次刷新日期。

查看数据分析和详细建议

您可以使用 Cloud de Confiance 控制台、gcloud CLI 或 Recommender API 查看有关具有大量打开的表的实例的分析洞见及详细建议。

控制台

如需使用 Cloud de Confiance 控制台查看接近性能阈值的实例的分析洞见和详细建议,请点击实例列表中的建议链接。

gcloud CLI

如需使用 gcloud CLI 查看接近性能阈值的实例的数据分析和详细建议,请运行 gcloud recommender insights list 命令,如下所示:

gcloud recommender insights list \
--project=PROJECT_ID \
--location=LOCATION \
--insight-type=google.cloudsql.instance.PerformanceInsight \
--filter=insightSubtype=MYSQL_HIGH_NUMBER_OF_OPEN_TABLES

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:区域,例如 us-central1。

API

如需使用 Recommendations API 查看具有大量打开的表的实例的数据洞见和详细建议,请调用 insights.list 方法,如下所示:

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/insightTypes/google.cloudsql.instance.PerformanceRecommender.MySqlHighNumberOfOpenTables/insights

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • LOCATION:区域,例如 us-central1。

下表列出了 Cloud SQL 大量打开的表 Recommender 生成的数据分析和建议,以帮助您提高性能。gcloud CLI 和 API 结果中显示子类型。

数据分析 建议
打开的表的数量超过 table_open_cache 标志值。
子类型:MYSQL_HIGH_NUMBER_OF_OPEN_TABLES
提高 table_open_cache 设置,以增加在单个缓存内可以同时保持打开状态的表的数量上限。 提高此标志的值可以保证高使用率期间的性能,但也会增加内存用量。
子类型:MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE

采纳建议

请仔细评估建议,并执行以下任何操作:

  • 如需检查实例,请点击查看实例。请参阅优化实例的性能并遵循建议。

  • 如需忽略建议,使其被取消突出显示并呈灰显状态,请点击忽略。

  • 如需关闭面板而不应用或忽略建议,请点击取消。

优化实例的性能

如需优化实例的性能,请执行以下任意操作:

  1. 将 table_open_cache 的值增加 1000,直到建议消失。此建议每天更新一次,因此在增加 table_open_cache 的值后,请等待 24 小时,然后再次检查建议。

  2. 在工作负载高峰期间,检查 open_tables 的值。如果 open_tables 的值大于 table_open_cache,则将 table_open_cache 的值增加到 open_tables 的值。

如需了解 MySQL 如何使用 table_open_cache,请参阅 MySQL 如何打开和关闭表。

如需了解如何更新数据库标志,请参阅配置数据库标志。

后续步骤