增加表的打开缓存大小

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 价格层级

准备工作

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

  • 如需获得查看和使用数据分析和建议的权限,请确保您拥有所需的角色
    任务 角色
    查看建议 以下角色之一:recommender.cloudsqlViewercloudsql.viewer
    采纳建议 以下角色之一:recommender.cloudsqlAdmincloudsql.editorcloudsql.admin
    如需详细了解角色,请参阅了解角色授予 IAM 权限
  • 启用 Recommender API。

    启用 API

列出实例性能建议

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

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

控制台

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

  1. 转到 Cloud SQL 实例页面。

    打开“Cloud SQL 实例”

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

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

  1. 转到 Recommendation Hub。另请参阅 Recommendation Hub 使用入门

    转到 Recommendation Hub

  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、简要建议、数据库引擎、位置和上次刷新日期。

查看数据分析和详细建议

您可以使用 Google Cloud 控制台、gcloud CLI 或 Recommender API 查看有关具有大量打开的表的实例的数据分析和详细建议。

控制台

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

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
通过减少打开的表提高 Cloud SQL 实例性能。
子类型:MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE

采纳建议

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

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

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

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

优化实例的性能

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

  1. table_open_cache 的值增加 500,直到推荐消失。建议每天更新一次,因此,当您提高 table_open_cache 的值后,请等待 24 小时,然后再次检查。

  2. 如果 open_tables 的值大于 table_open_cache,请将 table_open_cache 的值增加到 open_tables 的值。

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

后续步骤