Navicat 不具备团队存储用量监控功能,仅能通过执行SQL查询单库表空间占用,需借助数据库系统视图及外部脚本实现团队级存储管理。
Navicat 本身不提供团队存储用量监控功能
navicat 是数据库客户端工具,不是云存储或协作平台,它没有内置的“团队存储用量”统计模块,也不会自动采集、汇总多个用户对磁盘空间、备份体积、临时文件等的占用数据。你看到的“存储用量”相关界面(比如 server status 或 information schema 查询结果),只反映当前连接的数据库实例本身的表空间使用情况,和“团队”“协同开发”无直接关系。
想实现团队级存储管理,必须借助外部手段拼装能力:
- 用数据库自身视图(如
INFORMATION_SCHEMA.TABLES、pg_class)查各 schema 或用户表大小 - 配合操作系统命令(如
du -sh /var/lib/mysql/*)看物理目录占用 - 把 Navicat 当作执行终端,而非监控平台——它只是帮你连上去跑 SQL 或导出结果
用 Navicat 执行 SQL 查看单库表空间占用(MySQL/PostgreSQL)
这是最常用也最可控的方式:在 Navicat 中新建查询,粘贴对应语句,快速定位大表。不同数据库语法差异明显,不能混用。
MySQL 示例(按数据长度降序):
SELECT
table_schema AS `database`,
table_name,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS `size_mb`
FROM information_schema.TABLES
WHERE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys')
ORDER BY (data_length + index_length) DESC
LIMIT 20;
PostgreSQL 示例(需有 pg_stat_database 权限):
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename))) AS size
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)) DESC
LIMIT 20;
- 注意
pg_total_relation_size()包含索引,pg_table_size()只算表本身 - MySQL 的
information_schema.TABLES行数可能不准,尤其 MyISAM 表;InnoDB 推荐用DATA_LENGTH + INDEX_LENGTH - Navicat 默认查询结果不自动刷新,改了数据要手动重跑
通过 Navicat 定时任务 + 导出 + 外部脚本模拟“团队用量监控”
Navicat 支持设置定时执行 SQL 并导出为 CSV/Excel,这是唯一能“半自动化”的路径。但导出后必须靠外部工具(Python、Shell、甚至 Excel 公式)做聚合分析,才能看出谁建的表多、哪个项目库膨胀快。
- 在 Navicat 中右键连接 →
Scheduler→ 新建任务,选择“Run SQL File”或“Run SQL Statement” - 导出目标选
CSV,勾选Include column names,路径设为统一共享目录(如/monitoring/storage_daily.csv) - 别依赖 Navicat 自带的邮件通知——它不支持附件内容解析,只能发个“已执行”提醒
- 真正的“团队维度”需要你在 SQL 里加人工标记:比如约定所有业务库名带前缀
team_a_、team_b_,再按前缀分组统计
容易被当成“监控功能”但实际无效的操作
很多人试过这些操作,结果发现和预期完全不符:
- 点开
Connection Properties→General标签页里的Size字段:这只是 Navicat 缓存的连接配置大小,和数据库存储无关 - 用
Tools → Data Transfer看进度条:它只显示当前传输的数据量,不累计、不保存、不可回溯 - 打开
Query Analyzer并启用Explain:这是查执行计划的,和磁盘空间毫无关系 - 在
Backup界面看“Estimated size”:那是压缩前预估,且只针对当前一次备份任务,不记录历史
真正要管住团队存储,得从数据库权限设计开始——比如限制普通开发者创建库、禁止在生产库建临时表、定期清理 innodb_temp_tablespaces 或 pg_temp_* 目录。Navicat 只是手,不是脑。











