You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Google CloudSQL实例内各数据库的内存使用情况?

如何查看Google CloudSQL实例内各数据库的内存使用情况?

我之前也被这个问题困扰过——CloudSQL默认的监控面板确实只给实例级的总资源使用,看不到单个数据库的细节。不过试过几个办法,亲测有用,分享给你:

  • 直接用数据库内置查询获取内存相关数据
    不同数据库引擎有专属的系统表可以查询,能拿到单库的内存/缓存占用情况:

    • 对于MySQL/MariaDB:可以通过INFORMATION_SCHEMA.TABLES统计每个库的表和索引占用的逻辑内存(对应InnoDB缓冲池里的缓存部分),执行这条SQL:
      SELECT 
        table_schema AS '数据库名称',
        SUM(data_length + index_length)/1024/1024 AS '总占用内存(MB)'
      FROM INFORMATION_SCHEMA.TABLES 
      GROUP BY table_schema;
      
      要是想更精准看实时缓冲池使用,还可以查performance_schema:
      SELECT 
        object_schema, 
        SUM(number_of_blocks)*16/1024 AS '缓冲池占用(MB)' 
      FROM performance_schema.innodb_buffer_stats_by_table 
      GROUP BY object_schema;
      
      (注:16是InnoDB默认块大小,单位KB)
    • 对于PostgreSQL:结合pg_buffercache和pg_database能直接拿到每个库在共享缓冲池里的内存占用:
      SELECT 
        datname AS '数据库名称',
        COUNT(*) * current_setting('block_size')::bigint / 1024 / 1024 AS '缓冲池占用(MB)'
      FROM pg_buffercache JOIN pg_database ON pg_buffercache.relfilenode = pg_database.relfilenode
      GROUP BY datname;
      
  • 启用CloudSQL的性能洞察(Performance Insights)
    CloudSQL自带的Performance Insights支持按数据库维度拆分指标,虽然没有直接的“内存占用”数值,但能看到每个数据库的缓冲池命中率、表扫描次数、连接数这些和内存消耗强相关的指标,帮你间接判断哪个库是内存大户。
    操作很简单:在CloudSQL控制台找到你的实例,切换到「性能」标签,启用Performance Insights(没开的话直接开启就行),然后在图表的筛选器里选择「Database」维度,就能看到每个库的相关性能数据了。

  • 自定义监控指标实现长期追踪
    如果需要长期监控每个库的内存趋势,可以用Cloud Monitoring的自定义指标:

    1. 写一个脚本定期执行上面的数据库查询;
    2. 用Cloud Scheduler定时触发这个脚本(可以部署在Cloud Function或者Cloud Run里);
    3. 把查询结果推送到Cloud Monitoring的自定义指标中;
    4. 最后在Cloud Monitoring里创建仪表盘,就能看到每个库内存使用的历史趋势了。

备注:内容来源于stack exchange,提问作者ayaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:32:36